Автор | Сообщение |
|
Отправлено: 26.01.22 17:14. Заголовок: Не сходится ответ. Задание 25. Задача 185 (4522)
Добрый день! Не сходится ответ, не могу понять почему, помогите, пожалуйста! var a:array of integer; k,n,i,p,d:integer; begin k:=0; n:=400000000; while k<5 do begin i:=0; d:=1; while d*d<=n do begin d+=1; if d*d=n then begin i+=1; setlength(a,i); a[i-1]:=d; end else if n mod d=0 then begin i+=2; setlength(a,i); a[i-2]:=d; a[i-1]:=n div d; end; end; if i>=5 then begin sort(a); p:=a[0]*a[1]*a[2]*a[3]*a[4]; if (p<=n) and (p mod 100=17) then begin println(p,a[4]); k+=1; end; end; n+=1; end; end. Мои ответы: 72302617 150433 782217 37 166617 33 2880117 93 74874717 111
|
|
|
Ответов - 2
[только новые]
|
|
|
| Администратор
|
Сообщение: 3239
|
|
Отправлено: 27.01.22 11:35. Заголовок: Для Паскаля актуален..
Для Паскаля актуален выход чисел (произведения) из допустимого диапазона. У вас p - очень большое число, которое не влезает в integer (4 байта). Поэтому можно сделать так: a:array of BigInteger; p: BigInteger; Есть второй вариант, который не требует BigInteger. По условию P(N) <= N, поэтому можно сначала это неравенство хитро проверить: if (i>=5) and (n/a[0]/a[1]/a[2]/a[3]/a[4] >= 1) then begin
|
|
|
|
Отправлено: 28.01.22 13:57. Заголовок: Благодарю!!!..
Благодарю!!!
|
|
|
|