Форум » Рекурсивные процедуры и функции » ЕГЭ задание 16. (№ 2286) » Ответить

ЕГЭ задание 16. (№ 2286)

NotScream: Здравствуйте! У меня возник вопрос с этой задачей. Не сошёлся ответ: на сайте 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

polyakovss: if (b mod 10) mod 2 = 0 then check:=check+1;

NotScream: Спасибо

Татьяна 86: Здравствуйте! Никак не получается задача. Программа написана на Паскале, она зацикливается, сверила с выше написанным, по моему все подобно. 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. Заранее спасибо!


polyakovss: Здравствуйте, Татьяна 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; Разберитесь внимательно с "написанным выше".



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