Program fakt; var n,i,z:integer; begin readln(n); z:=1; for i:=2 to n do z:=z*i; writeln(z); end.
Если программу написать так, то максимальный факториал, которой мы сможем вычислить - 12. Можно integer изменить на real, тогда чуть больше сможем вычислить. Так же можно вычислить через массив, тогда где-то 3000 мы сможем получить.
Если же ввести больше 12 в этой программе, то получится переполнение переменой, из-за чего число пойдёт "по кругу". Т.е. мы получим не 3 000 000 000, а -1 000 000 000, т.к. максимальное число у integer - примерно 2 000 000 000
Внимание! Если программа не работает, обновите версию!
begin
var a:=ReadReal('Введите число:');
var k:=ReadInteger('Введите величину сдвига десятичной точки:');
a:=a*10**k;
a.Println
end.
Примеры
Введите число: 12345.09876
Введите величину сдвига десятичной точки: -3
12.34509876
Введите число: 345.09876
Введите величину сдвига десятичной точки: 4
3450987.6
Введите число: 12345.09876
Введите величину сдвига десятичной точки: 8
1234509876000
Введите число: 12345.09876
Введите величину сдвига десятичной точки: 15
1.234509876E+19
Введите число: 1.23456789e-10
Введите величину сдвига десятичной точки: -25
1.23456789E-35
var
n,i,z:integer;
begin
readln(n);
z:=1;
for i:=2 to n do
z:=z*i;
writeln(z);
end.
Если программу написать так, то максимальный факториал, которой мы сможем вычислить - 12. Можно integer изменить на real, тогда чуть больше сможем вычислить. Так же можно вычислить через массив, тогда где-то 3000 мы сможем получить.
Если же ввести больше 12 в этой программе, то получится переполнение переменой, из-за чего число пойдёт "по кругу". Т.е. мы получим не 3 000 000 000, а -1 000 000 000, т.к. максимальное число у integer - примерно 2 000 000 000