Помощь - Поиск - Пользователи - Календарь
Полная версия: сумма выбранных чисел делилась на N
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Tima
имеется n чисел, написать программу, так чтобы сумма выбранных чисел делилась на n.
например n=6, а выбирать нужно по 2 числа, так чтобы сумма этих двух была равна 6, выдать все возможные комбинации...помогите плз.
volvo
Цитата
так чтобы сумма этих двух была равна 6
Ты уж реши для себя, равна или все-таки кратна... А то в первой части задания ты говоришь одно, а во второй - другое...

Здесь:
FAQ: Комбинаторика -> Сочетания
есть программа генерации всех сочетаний (сделай из 6 по 2), и проверяй, соответствуют ли элементы массива с найденными индексами заданному условию...
Tima
помогите сделать проверку на кратность сумму чисел на N...

for i:=0 to m do a[i]:=i; { формируется 1-е сочетание}
repeat
use;
I:=m;

while a[i]=n-m+i do dec(i); {поиск элемента для изменения}
inc(a[i]);

if ( a[i] div n = 0 ) then inc(sum); {я сделал такую проверку правильно ли? если нет то какую нужно?}


for j:=i+1 to m do a[j]:=a[j-1]+1; {изменение правой части сочетания}

then
inc(sum);}

until i=0;
volvo
Надо проверять остаток от деления...
if ( a[i] MOD n = 0 ) then inc(sum);


Причем ты это делаешь совершенно не там, где нужно... Я бы сделал это прямо в процедуре Use (перед выводом результатов):

Var
Data: array[1 .. n] of Integer; { <--- Это - твои N чисел }

procedure use;
var i, s: integer;
begin

s := 0;
for i:=1 to m do s := s + Data[a[ i ]];
if s mod n = 0 then
for i := 1 to m do write(Data[a[ i ]]:4);

end;
Tima
спс..да что-то я с difom запарился точно думал про одно написал про другое, спс=))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.