Супермен пошел учиться на курсы программистов. на зачете ему попалась : "дата некоторого дня определяется тремя натуральными числами - g (год), m (месяц), d (день). по заданным данным определите дату следующего дня." решите ее. (используя pascalabc)
Программу я не смогу написать, но примерный алгоритм дам. Если (M = 1, 3, 5, 7, 8, 10, или 12) И (D <= 30), то (D = D + 1) Если (M = 1, 3, 5, 7, 8, 10) И (D = 31), то (M = M + 1, D = 1) Если (M = 12) И (D = 31), то (G = G + 1, M = 1, D = 1) Если (M = 4, 6, 9, 11) И (D <= 29), то (D = D + 1) Если (M = 4, 6, 9, 11) И (D = 30), то (M = M + 1, D = 1) Если (M = 2) И (D <= 27), то (D = D + 1) Если (M = 2) И (G mod 4 <> 0) И (D = 28), то (M = 3, D = 1) Если (M = 2) И (G mod 4 = 0) И (D = 28), то (D = D + 1) Если (M = 2) И (G mod 4 = 0) И (D = 29), то (M = 3, D = 1) Если (M = 2) И (G = 1900 или 2100) И (D = 28), то (M = 3, D = 1) В последней строчке я учёл разницу между Григорианским и Юлианским календарями. По Юлианскому после 28.02 1900 или 2100 года наступит 29.02. По Григорианскому наступит 01.03.
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.
В шестеричной системе алфавит состоит из цифр 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²
Если (M = 1, 3, 5, 7, 8, 10, или 12) И (D <= 30), то (D = D + 1)
Если (M = 1, 3, 5, 7, 8, 10) И (D = 31), то (M = M + 1, D = 1)
Если (M = 12) И (D = 31), то (G = G + 1, M = 1, D = 1)
Если (M = 4, 6, 9, 11) И (D <= 29), то (D = D + 1)
Если (M = 4, 6, 9, 11) И (D = 30), то (M = M + 1, D = 1)
Если (M = 2) И (D <= 27), то (D = D + 1)
Если (M = 2) И (G mod 4 <> 0) И (D = 28), то (M = 3, D = 1)
Если (M = 2) И (G mod 4 = 0) И (D = 28), то (D = D + 1)
Если (M = 2) И (G mod 4 = 0) И (D = 29), то (M = 3, D = 1)
Если (M = 2) И (G = 1900 или 2100) И (D = 28), то (M = 3, D = 1)
В последней строчке я учёл разницу между Григорианским и Юлианским календарями.
По Юлианскому после 28.02 1900 или 2100 года наступит 29.02.
По Григорианскому наступит 01.03.