Форум » Кодирование и декодирование информации » Задание 8 (№231) не сходится ответ » Ответить

Задание 8 (№231) не сходится ответ

НатальяП: Здравствуйте. Не сходится ответ на 231. Должно быть 2676053 Моё решение: [pre2] function b(x: integer): boolean; begin var s := ''; b := ((pos('000', s) = 0) and (pos('111', s) = 0) and (pos('222', s) = 0) and (pos('333', s) = 0) and (pos('444', s) = 0) and (pos('555', s) = 0) and (pos('666', s) = 0) and (pos('777', s) = 0) and (pos('888', s) = 0)) and ((x mod 9 <> 3) and (x mod 9 <> 4) and (x mod 9 <> 7)); end; begin var c := 0; for var i := trunc(9 ** 6) to trunc(9 ** 7 - 1) do if b(i) then c += 1; print(c)//2834352 end.[/pre2]Спасибо.

Ответов - 3

Поляков: Проверьте правильность работы функции на простых примерах. Про девятеричную систему не забудьте.

Galina22: n=0 s='012345678' s1='12345678' s2='012568' for a in s1: for b in s: for c in s: for d in s: for e in s: for f in s: for j in s2: sn=a+b+c+d+e+f+j if sn.count('000')==0 and sn.count('111')==0 and sn.count('222')==0 and sn.count('333')==0 and sn.count('444')==0 and sn.count('555')==0 and sn.count('666')==0 and sn.count('777')==0 and sn.count('888')==0: n=n+1 print(n) ответ: 2676053

НатальяП: Спасибо, нашла свою ошибку, забыла число в 9сс перевести. Все получилось. function b(x: integer): boolean; begin var s := ''; var a := x; while a > 0 do begin s := IntToStr(a mod 9) + s; a := a div 9 end; b := (pos('000', s) = 0) and (pos('111', s) = 0) and (pos('222', s) = 0) and (pos('333', s) = 0) and (pos('444', s) = 0) and (pos('555', s) = 0) and (pos('666', s) = 0) and (pos('777', s) = 0) and (pos('888', s) = 0) and (x mod 9 <> 3) and (x mod 9 <> 4) and (x mod 9 <> 7); end; begin var c := 0; for var i := trunc(9 ** 6) to trunc(9 ** 7 - 1) do if b(i) then c += 1; print(c)//2676053 end.




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