Форум » Обработка целых чисел » (№ 2328) (А. Куканова) » Ответить

(№ 2328) (А. Куканова)

Кэйт: Рассматривается множество целых чисел, принадлежащих числовому отрезку [3466; 9081], которые удовлетворяют следующим условиям: − количество цифр в восьмеричной и десятичной записях числа не совпадает; − остаток от деления на 7 равен 1 или 5. Найдите количество таких чисел и максимальное из них. Ответ: 1425 9080 [pre2] var k,r,p,l,x,i,max,n: integer; begin n:=0; max:=0; for i:= 3466 to 9081 do begin x:=i; l:=0; while x>0 do begin p:= x mod 8; x:=x div 8; r:=r+1; end; k:=0; while x>0 do begin l:= x mod 10; x:= x div 10; k:= k+1; end; if k<>r then if ( i mod 7=1) or ( i mod 7 =5) then begin n:=n+1; if i> max then max:=i; end; end; writeln(n,' ',max); end.[/pre2] У меня получается 1605 9080

Ответов - 4

Поляков: Не нашел, где вы сбрасываете счетчик r.

Кэйт: А где его правильно сбросить?

Поляков: Кэйт пишет: А где его правильно сбросить? Перед циклом, где он будет увеличиваться, написать r:=0;


polyakovss: Еще необходимо восстановить значение x. Это главное. Можно также удалить лишнее. [pre2] var k,r,p,l,x,i,max,n: integer; begin n:=0; max:=0; for i:= 3466 to 9081 do begin x:=i; r:=0; while x>0 do begin x:=x div 8; r:=r+1; end; x:=i; k:=0; while x>0 do begin x:= x div 10; k:= k+1; end; if k<>r then if ( i mod 7=1) or ( i mod 7 =5) then begin n:=n+1; if i> max then max:=i; end; end; writeln(n,' ',max); end. [/pre2]



полная версия страницы