var y: System.uint64; //Большая цЫфра же и положительная x, i: byte; //Нет смысла большие числа брать слишком, переполнение будет
begin readln(x); //Принимаем число... y := 1; i := 1; repeat y *= i; //...и умножаем такое-то количество раз i += 1; until (i > x); if (y = 0) then //Выводим, предусмотрев переполнение writeln('Слишком большая цЫферка') else writeln(y); end.
Int64 - это то же самое, что LongInt, а Uint64 (unsign long int) - длинное число без знака, при правильном использовании позволяет записывать в переменную числа, в 2 раза превышающие максимум Int64
Var y: System.uint64; //Большая цЫфра же и положительная x, i: byte; //Нет смысла большие числа брать слишком, переполнение будет
begin readln(x); //Принимаем число... y := 1; for i := 1 to x do y *= i; //...и умножаем такое-то количество раз if (y = 0) then //Выводим, предусмотрев переполнение writeln('Слишком большая цЫферка') else writeln(y); end.
Int64 - это то же самое, что LongInt, а Uint64 (unsign long int) - длинное число без знака, при правильном использовании позволяет записывать в переменную числа, в 2 раза превышающие максимум Int64
Представим таблицу в виде кругов Эйлера.
Пусть поле — круг 1, рожь — круг 2, напряженность — круг 3. Тогда задача — найти зону (обозначим зону за N) N5 + N6. По таблице известно
N1 + N4 + N5 + N6 = 90
N2 + N4 + N5 + N7 = 71
N3 + N6 + N5 + N7 = 62
N1 + N2 + N3 + N4 + N5 + N6 + N7 = 140
N4 + N5 = 53
N7 + N5 = 0
Тогда найдем N5 = 0, а N6 = 30.
ответ: 30.