Сколько различных значений числа d можно ввести, чтобы после выполнения программы было напечатано 196? var n, s, d: integer; begin readln(d); n : = 7; s : = 35; while s < = 2570 do begin s : = s + d; n : = n + 9 end; write(n) end.
Функция считает, если коротко n := 7+9*((2570-35) div d + 1) 196 = 7+9*((2570-35) div d + 1) (196-7)/9-1 = (2570-35) div d 20 = 2535 div d 4 = 507 div d 507/4 =126.75, значит можно взять меньше подбором 126 125 124 123 122 121 => 6 чисел
или программой //PascalABC.NET версия 3.2, сборка 1389 //Если программа не запускается, то обновите версию function f(d: integer): integer; var n, s: integer;
begin n := 7; s := 35; while s <= 2570 do begin s := s + d; n := n + 9 end; f := n; end;
begin for var i := 1 to 100000000 do begin if f(i) = 196 then writeln(i); if f(i) <> 7 + 9 * ((2570 - 35) div i + 1) then writeln('not ', i); end; end.
В шестеричной системе алфавит состоит из цифр 0,1,...5. Четырехразрядное число по условиям задания (1) и (2) имеет вид aabb, где a=1,2,...5, b=0,1,...5. В развернутой записи число имеет вид a×6³+a×6²+b×6+b×1 = 6²×a(6+1)+b(6+1) = 7(36a+b) При этом по условию (3) можно записать, что k² = 7(36a+b) Чтобы число 7(36a+b) было полным квадратом, 36a+b должно быть кратно 7, а остаток от деления (36a+b) на 7 также должен быть полным квадратом. Получаем, что 36a+b = 7m² Минимальное значение 36a+b равно 36×1+0 = 36, следовательно m>2 (при m=2 получим 7×4=28, что меньше 36). При m=3 получаем 36a+b = 63 и при a∈[1;5], b∉[0;5] решений нет. При m=4 получаем 36a+b = 112 и находим a=3, b=4 - есть решение! При m=5 получаем 36a+b = 175 и при a∈[1;5], b∉[0;5] решений нет. При m=6 получаем 36a+b = 175 и получаем, что a=7, а это недопустимо. Дальше смысла проверять нет. Итак, a=3, b=4, число 3344₆ = 7×(36×3+4) = 784₁₀ = 28²
Program lol (input, output); var i, n, d, sd, s4d, kd, kn4d, k4d, kbd:integer; begin writeln ('Введите само число и число d'); read (n, d); writeln ('Делители:'); I:=1; sd:=0; s4d:=0; kd:=0; kn4d:=0; k4d:=0; kbd:=0; while I <=n do begin if n mod I = 0 then begin kd:=kd+1; writeln (I); sd:=sd+I; if I > d then kbd:=kbd+1; if I mod 2 = 0 then begin s4d:=s4d+I; k4d:=k4d+1; end else kn4d:=kn4d+1; end; I:=I+1; end; writeln (' '); writeln ('сумма делителей ', sd); writeln ('сумма четных делителей ', s4d); writeln ('количество делителей ', kd); writeln ('количество нечетных делителей ', kn4d); writeln ('количество четных делителей ', k4d); writeln ('количество делителей болеше d ', kbd); end.
n := 7+9*((2570-35) div d + 1)
196 = 7+9*((2570-35) div d + 1)
(196-7)/9-1 = (2570-35) div d
20 = 2535 div d
4 = 507 div d
507/4 =126.75, значит можно взять меньше
подбором 126 125 124 123 122 121 => 6 чисел
или программой
//PascalABC.NET версия 3.2, сборка 1389
//Если программа не запускается, то обновите версию
function f(d: integer): integer;
var
n, s: integer;
begin
n := 7;
s := 35;
while s <= 2570 do
begin
s := s + d;
n := n + 9
end;
f := n;
end;
begin
for var i := 1 to 100000000 do
begin
if f(i) = 196 then writeln(i);
if f(i) <> 7 + 9 * ((2570 - 35) div i + 1) then writeln('not ', i);
end;
end.