// PascalABC.NET 3.0, сборка 1073 const m=5; n=4; a:array[1..m] of real=(2,-7.1,3.2,-5.4,6.9); b:array[1..n] of real=(8.1,3.2,-6.4,-3.5); k=3; var i,j:integer; sk:real; s:array[1..m,1..n] of real; begin Writeln('Массив S'); for i:=1 to m do begin for j:=1 to n do begin s[i,j]:=a[i]*b[j]; Write(s[i,j]:7:2) end; Writeln end; sk:=0; for i:=1 to m do sk:=sk+s[i,k]; Writeln('Сумма элементов столбца ',k,' равна ',sk) end.
Результат выполнения программы: Массив S 16.20 6.40 -12.80 -7.00 -57.51 -22.72 45.44 24.85 25.92 10.24 -20.48 -11.20 -43.74 -17.28 34.56 18.90 55.89 22.08 -44.16 -24.15 Сумма элементов столбца 3 равна 2.56
Const N=2016; var a: array [1..N] of integer; i, m, k: integer; begin for i:=1 to N do readln(a[i]); k:=0; for i:=1 to N do begin m:=a[i]-516; if m>=0 then begin if m mod 8=0 then begin m:=m div 8; if (m - m mod 8) mod 8 = 0 then if a[i]>k then k:=a[i] end end end; Writeln(k) end.
Объяснения Число 1000₁₀ = 1750₈, а минимальное четырехзначное восьмеричное число - это 1000₈ = 512₁₀. Следовательно, искомые числа лежат на интервале [512;1000] и всегда содержат 1 в старшем разряде своего восьмеричного представления. Вычтем из исходного числа 512 и тогда можно рассматривать только трехзначные восьмеричные числа. Трехзначное восьмеричное число в расширенной записи имеет вид N=abc₈ = (a×8²+b×8¹+c)₁₀ = 64a+8b+c. По условию с=4, поскольку число должно оканчиваться на 4 в своем восьмеричном представлении. Мы получили соотношение N-4 = 64a+8b = 8(8a+b), т.е. N-4 должно быть кратно 8. Итак, первый шаг - получить a[i]-516 и если оно не отрицательно, проверить нулевой остаток от деления этой величины на 8. Если это так, полагаем m=(a[i]-4) div 8. Рассматриваем уравнение m=8a+b. a=(m-b)/8. Понятно, что m-b>0 и a должно быть кратно 8. Что и следует проверить. Если все так и есть - число подходит и следует обычная проверка алгоритма поиска максимума.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку