Помощь - Поиск - Пользователи - Календарь
Полная версия: Целочисленная арифметика
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
XANDER
Даны натуральные числа n, m. Найти все натуральные числа меньше n, квадрат суммы цифр которых равен m.

Помогите решить, пожалуйста.
NorthAngel
Цитата(XANDER @ 14.12.2005 17:08) *

Даны натуральные числа n, m. Найти все натуральные числа меньше n, квадрат суммы цифр которых равен m.

Помогите решить, пожалуйста.


Код

uses crt;
var
  b,t,s,i:integer;
  n,m,a:longint;
begin
   clrscr;
   write('n = ');  read(n);
   write('m = ');  read(m);
   for i:=1 to n-1 do
   begin
     s:=0;
     a:=i;
     repeat
        b:=a div 10;
        t:= a-b*10;
        s:=s+t;
        a:=b;
     until a<=0;
     if s*s=m then writeln(i);
   end;
   readkey;
end.
XANDER
NorthAngel,

Немогу найти где ошибка, подскажи.
Lapp
Извини - а почему ты думаешь, что здесь есть ошибка?
NorthAngel
Никто не застрахован от ошибок. blink.gif
НО.. напиши конкретные данные ввода, и что получилось.
Я здесь никакой ошибки не вижу.
Lapp
Я проверил с разными данными - все работает как из пушки!
Молодец, Ангел, хорошая работа. good.gif

Ума не приложу, что имел в виду Xander. Подождем - может и увидим..
volvo
lapp,
может он подпись NorthAngel по ошибке за замечание принял? smile.gif
Lapp
У меня тоже такая мысль мелькнула smile.gif
Тогда это можно в раздел смешных случаев постить.. только как?
klem4
uses crt;
var
n,m,s,i,temp : integer;
begin
clrscr;

write('n='); readln(n);

write('m='); readln(m);

for i := 1 to n-1 do begin
s := 0;
temp := i;
while(temp>0) do begin
s := s + temp mod 10;
temp := temp div 10;
end;

if sqr(s) = m then writeln(i);
end;

readln
end.

NorthAngel
mega_chok.gif использовано на две переменные меньше.. мдаа.. немного не рационально поступила ='(
DASHA
Все огромное спасибо!!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.