Автор | Сообщение |
|
Отправлено: 13.03.21 18:46. Заголовок: (№ 2328) (А. Куканова)
Рассматривается множество целых чисел, принадлежащих числовому отрезку [3466; 9081], которые удовлетворяют следующим условиям: − количество цифр в восьмеричной и десятичной записях числа не совпадает; − остаток от деления на 7 равен 1 или 5. Найдите количество таких чисел и максимальное из них. Ответ: 1425 9080 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. У меня получается 1605 9080
|
|
|
Ответов - 4
[только новые]
|
|
|
| Администратор
|
Сообщение: 2564
|
|
Отправлено: 13.03.21 20:09. Заголовок: Не нашел, где вы сбр..
Не нашел, где вы сбрасываете счетчик r.
|
|
|
|
Отправлено: 13.03.21 20:15. Заголовок: А где его правильно ..
А где его правильно сбросить?
|
|
|
|
| Администратор
|
Сообщение: 2565
|
|
Отправлено: 13.03.21 20:16. Заголовок: Кэйт пишет: А где ег..
Кэйт пишет: цитата: | А где его правильно сбросить? |
|
Перед циклом, где он будет увеличиваться, написать r:=0;
|
|
|
|
Отправлено: 13.03.21 20:40. Заголовок: Еще необходимо восстановить значение x
Еще необходимо восстановить значение x. Это главное. Можно также удалить лишнее. 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.
|
|
|
|