XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Общение> Hard & Soft
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
WaterMan
J.R.R.
offline
Опыт: 17,019
Активность:
[!Pascal, (java)] Требуется помощь, срочно
В общем, есть задача. Требуется написать программу на языке Паскаль. В гугле не смог найти, но если кто-то сможет найти - тоже вариант. Условие:
Суммы
Ограничение времени: 2.0 секунды
Ограничение памяти: 64 МБ
Дано N целых чисел A1, A2, ..., AN. Требуется найти количество различных значений сумм вида k1A1 + k2A2 + ... + kNAN , где ki принимает значение нуля или единицы.
Входные данные:
В первой строке находится число N, во второй - A1, A2, ..., AN через пробел (1 <= N <= 500, 0 <= Ai <= 100).
Выходные данные:
Вывести одно число - количество различных значений сумм.
Пример входных данных:
3
1 1 2
Пример выходных данных:
5
__________
Заранее спасибо
WaterMan добавил:
Вроде какое-то решение нашел на java, надо бы проверить и перевести в pascal, некоторых функций я не знаю:
((код
void solve(){
int n = nextInt();
int[] k = new int[100+1];
boolean[] a = new boolean[50001];
for (int i=0; i<n; i) k[nextInt()];
int maxi = 0, tempmax, vir;
a[0]=true;
for (int i=0; i<101; i++)
{
tempmax = maxi;
if (k[i]>0)
{
for (int j=maxi; j>-1; j--)
{
if (a[j])
{
for (int koef=1; koef<=k[i]; koef++)
{
vir = (koef*i+j);
tempmax = tempmax<vir?vir:tempmax;
a[vir] = true;
}
}
}
}
maxi = tempmax>maxi?tempmax:maxi;
}
int result = 0;
for (int i=0; i<50001; i++)
{
if (a[i])
{
result++;
}
}
out.println(result);
}
))

Отредактировано WaterMan, 04.11.2010 в 14:02.
Старый 04.11.2010, 13:47
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 02:55.