Предмет: Информатика,
автор: NatashkaJ
Подсчитать сумму и произведение первых N натуральных чисел.С помощью операторов или while,или repeat или for
KnowsUser1:
язык?
Ответы
Автор ответа:
1
Ответ:
Язык не указан, предположим что нужен кто то из популярных: Паскаль или Питон.
PascalABC.NET:
#1 (По умному)
begin
var a := Range(1, ReadInteger('N = '));
a.Sum.Println;
a.Aggregate(BigInteger.One, (p, q) -> p*q).Println;
end.
#2 "А нас учили по другому"
begin
var N := ReadInteger();
var sum:int64 := 0;
var prod:BigInteger := 1; //Для большого N произведение не влезет в int64, по этому юзаем бесконечное целое число BigInteger
for var i := 1 to N do begin
sum += i;
prod *= i;
end;
Println(sum, prod);
end.
#3 Вариант на Питоне
summ, prod = 0, 1
for i in range(1, int(input())+1):
summ += i; prod *= i
print(summ, prod)
Объяснение:
Сяпуфки,но почему мы не изучали этот бигинтэджер и инт64?
без понятия. Это стандартные для PascalABC.NET Целочисленные типы. Можешь спросить у учителя, почему вам дают задание на, грубо говоря, поиск факториала некоего числа, величина которого зависит только от фантазии юзера, и не рассказывают, какие типы могут хранить такие огромные значения
Так,а если их изменить на стандартные интэджер и риал?
сумма в интеджер может влезет, наскладывать на 2 триллиона это сильно, но при вводе 171 и выше, если указать тип данных для произведения real или double, программа будет выдавать значок бесконечности, ибо факториал 171 не влазит даже в real. Такое число можно засунуть только в БигИнтеджер
И да, int64 и BigInteger такие же "стандартные" как integer(longint) и real
Похожие вопросы
Предмет: Українська література,
автор: Аноним
Предмет: Английский язык,
автор: YkikoKuroki
Предмет: Русский язык,
автор: karina89459
Предмет: Математика,
автор: Евгения6767