Форум » Обработка целых чисел » Задание 17 №164 » Ответить

Задание 17 №164

oksakol: Здравствуйте! № 164 Подскажите, в чем ошибка (не сходится ответ) {В файле 17-3.txt содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от –10 000 до 10 000 включительно. Определите и запишите в ответе сначала количество троек элементов последовательности, в которых произведение кратно 7, а сумма оканчивается на 5, затем максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.} //Не совпадает с ответом ### assign(input, '17-3.txt'); var a:=readinteger; var b:=readinteger; var kol:=0; var maxS:=-10000*3; while not eof() do begin var c:=readinteger; var P:=a*b*c; var S:=a+b+c; if (abs(S mod 10)=5) and (P mod 7=0) then begin inc(kol); if S>maxS then maxS:=S; end; (a,b):=(b,c); end; print(kol, maxS);

Ответов - 6

Поляков: У вас произведение не помещается в 4-байтовую ячейку. [pre2]var P: BigInteger := BigInteger(a)*b*c; [/pre2]

oksakol: Спасибо!

GasDM: Чтобы не вводить тип BigInteger (задача-то не олимпиадная, чтобы не засчитывать ответ из-за ограниченности типа), можно поступить так: ((a mod 7 = 0) or (b mod 7 = 0) or (c mod 7 = 0)) Произведение кратно 7, если хотя бы один из множителей кратен 7


dflksa: Всем здравствуйте! Помогите, пожалуйста, найти ошибку - тоже не сходится ответ в задаче №164. [pre2]var n:=5001; var f:text;p:int64; a:array[1..5001] of integer; begin assign(f,'17-3.txt'); reset(f); for var i:=1 to n do readln(f,a[ i]); var c:=0; var mxs:=-10000*3; for var i:=1 to n-2 do begin p:=a[ i]*a[ i+1]*a[ i+2]; if (p mod 7 = 0) and (abs(a[ i]+a[ i+1]+a[ i+2]) mod 10 =5) then begin c:=c+1; mxs:=max(mxs,a[ i]+a[ i+1]+a[ i+2]) end; end; Print(c,mxs); end.[/pre2]

Поляков: У вас получается слишком большое произведение, которое не помещается в 4 байта. Вспомните, что произведение делится на 7 тогда и только тогда, когда один из сомножителей делится на 7.

dflksa: Спасибо огромное! В таком варианте получилось Для массива еще добавила тип a:array[1..5001] of int64; И тогда все получается даже в исходном варианте.



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