Задание 1. Оцените временную сложность алгоритма вычисления факториала (произведения) целого положительного числа. Значение x вводится с клавиатуры.
Program gg;
var m, i, x,f: Integer;
begin
m:=1;
readln(x);
for i:=2 to x do
m:=m*i;
F:=m;
writeln(f);
end.
36 25 24 13 12 1
35 26 23 14 11 2
34 27 22 15 10 3
33 28 21 16 9 4
32 29 20 17 8 5
31 30 19 18 7 6
Объяснение:
1)
const n=6;
var a:array[1..n,1..n] of integer;
i,j:integer;
begin
for i:=1 to n do
if i mod 2=1
then for j:=1 to n do a[i,j]:=n*i-j+1
else for j:=1 to n do a[i,j]:=n*(i-1)+j;
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:3);
writeln;
end;
end.
Результат:
6 5 4 3 2 1
7 8 9 10 11 12
18 17 16 15 14 13
19 20 21 22 23 24
30 29 28 27 26 25
31 32 33 34 35 36
2)
const n=6;
var a:array[1..n,1..n] of integer;
i,j:integer;
begin
for j:=n downto 1 do
if (n+j) mod 2=0
then for i:=1 to n do a[i,j]:=n*(n-j)+i
else for i:=1 to n do a[i,j]:=n*(n-j+1)-i+1;
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:3);
writeln;
end;
end.
Результат:
36 25 24 13 12 1
35 26 23 14 11 2
34 27 22 15 10 3
33 28 21 16 9 4
32 29 20 17 8 5
31 30 19 18 7 6
Для определения чётности или нечётности числа используется следующее условие:
if S%2==0:
print('Число чётное')
else:
print('Число нечётное')
Разберём условие S%2==0:
Знак % находит остаток от деления чисел, при этом целую часть он не учитывает. Так, например, 5%2 будет равняться 1
Ещё несколько примеров нахождения остатка:
15%4=3
10%7=3
6%2=0
Чётное число это число, которое делится на 2 без остатка, именно это мы и проверяем: если число делится на 2 без остатка (т.е., остаток 0), то оно чётное, а если же нет, то оно нечётное.