Найти все двузначные числа, сумма цифр которых не меняется при умножении числа на 2,3,4,5,6,7,8,9.
Lapp
4.05.2009 18:16
Цитата(BAEVIK @ 4.05.2009 14:56)
Найти все двузначные числа, сумма цифр которых не меняется при умножении числа на 2,3,4,5,6,7,8,9.
Я так думаю, что нужны все же не все множители сразу, а какой-то один из них. Тогда можно делать как-то так:
for k:=2 to 9 do for i:=1 to 9 do for j:=0 to 9 do begin a:=10*i+j; a0:=a mod 10; a:=a div 10; a1:=a mod 10; a2:=a div 10; if i+j=a0+a1+a2 then WriteLn(i,j) end;
Надеюсь, не ошибся..))
Ozzя
4.05.2009 18:17
Решение в лоб. Выполнено для "Найти все двузначные числа, сумма цифр которых не меняется при умножении числа на ...,3... Для 2 таких чисел не нашлось.
program tz; var n,k,sum:LongInt; sum2,temp2,temp,pred,nach,i:LongInt; begin nach:=10; pred:=99; for i:=nach to pred do begin sum:=0; temp:=i; while temp>0 do begin sum:=sum+temp mod 10; temp:=temp div 10; end; temp2:=i*3; sum2:=0; while temp2>0 do begin sum2:=sum2+temp2 mod 10; temp2:=temp2 div 10; end;
if sum=sum2 then writeln('Found ',i,' ',i*3); end; end.
Добавлено через 5 мин. Виноват, для 2 тоже есть ответ. Сами доделаете для остальных. Hint - нужен еще один цикл.
Ozzя
5.05.2009 12:57
program tz; var n,k,sum:LongInt; sum2,temp2,temp,pred,nach,i:LongInt; begin nach:=10; pred:=99; for n:=2 to 9 do begin WriteLn('Умноженные на ',n); for i:=nach to pred do begin sum:=0; temp:=i; while temp>0 do begin sum:=sum+temp mod 10; temp:=temp div 10; end; temp2:=i*n; sum2:=0; while temp2>0 do begin sum2:=sum2+temp2 mod 10; temp2:=temp2 div 10; end;
if sum=sum2 then writeln('Найдено число ',i,' ','умноженное на ',n,' = ',i*n); end; writeln('Нажмите Enter.'); readln; end; end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.