Автор | Сообщение |
|
Отправлено: 02.04.21 16:42. Заголовок: ЕГЭ задание 16. (№ 2286)
Здравствуйте! У меня возник вопрос с этой задачей. Не сошёлся ответ: на сайте 14, у меня получилось 2.Подскажите пожалуйста, что я неправильно написал. Программа на языке Pascal: function f(n:integer):integer; begin if n<=13 then f:=n*n*n+n*n+1 else if n mod 3 = 0 then f:=f(n-1)+2*n*n-3 else f:=f(n-2)+3*n+6; end; var n, sum, b, check:integer; begin sum:=0; for n:=1 to 1000 do begin b:=f(n); check:=0; while b>0 do begin if (b mod 10) mod 2 <> 0 then check:=check+1; b:=b div 10; end; if check=0 then begin sum:=sum+1; end; end; writeln(sum); end. Заранее спасибо! Дополнение: Если брать отдельные чётные числа, то получается, но почему мой 1 метод не подходит? function f(n:integer):integer; begin if n<=13 then f:=n*n*n+n*n+1 else if n mod 3 = 0 then f:=f(n-1)+2*n*n-3 else f:=f(n-2)+3*n+6; end; var n, sum, b, check:integer; begin sum:=0; for n:=1 to 1000 do begin b:=f(n); check:=0; while b>0 do begin if (b mod 10 = 0) or (b mod 10 = 2) or (b mod 10 = 4) or (b mod 10 = 6) or (b mod 10 = 8) then check:=check+1; b:=b div 10; end; if check=0 then begin sum:=sum+1; end; end; writeln(sum); end.
|
|
|
Ответов - 4
[только новые]
|
|
|
Отправлено: 02.04.21 17:20. Заголовок: Ответ
цитата: | if (b mod 10) mod 2 = 0 then check:=check+1; |
|
|
|
|
|
Отправлено: 02.04.21 18:12. Заголовок: Спасибо..
Спасибо
|
|
|
|
Отправлено: 06.04.21 21:48. Заголовок: Здравствуйте! Никак ..
Здравствуйте! Никак не получается задача. Программа написана на Паскале, она зацикливается, сверила с выше написанным, по моему все подобно. function F(n:integer):integer; begin if n<=13 then F:=n*n*n*n+n*n+1; if (n mod 3=0) and (n>13) then F:=F(n-1)+2*n*n-3; if (n mod 3<>0) and (n>13) then F:=F(n-2)+3*n+6; end; var k,n,s:integer; begin k := 0; for n:=1 to 1000 do begin s:=F(n); while s>0 do begin if (s mod 10) mod 2<>0 then k:=k+1; end; end; writeln(k); end. Заранее спасибо!
|
|
|
|
Отправлено: 06.04.21 23:16. Заголовок: Ответ
Здравствуйте, Татьяна 86! Вы пишете: цитата: | сверила с выше написанным, по моему все подобно |
| Это не так. Ваша программа зацикливается потому, что в цитата: | while s>0 do begin if (s mod 10) mod 2<>0 then k:=k+1; end; |
|
переменная s не изменяется. Что такое k? И еще у Вас: цитата: | function F(n:integer):integer; begin if n<=13 then F:=n*n*n*n+n*n+1; if (n mod 3=0) and (n>13) then F:=F(n-1)+2*n*n-3; if (n mod 3<>0) and (n>13) then F:=F(n-2)+3*n+6; end; |
| Разберитесь внимательно с "написанным выше".
|
|
|
|