Вопрос задан 31.12.2025 в 18:12. Предмет Информатика. Спрашивает Рябичева Анастасия.

Найти произведение всех целых чисел от a до 20 (значение a вводится с клавиатуры: 1 <= a <= 20). Задача на C++.

Перейти к ответам

Ответы на вопрос

Отвечает Ежелева Анна.

Если коротко, нужно посчитать произведение a(a+1)20a\cdot (a+1)\cdot\ldots\cdot 20. Это можно сделать простым циклом. Важно проверить, что 1a201 \le a \le 20 (иначе задача не имеет смысла в рамках условия).

Идея решения

  • Считать aa с клавиатуры.

  • Если a<1a < 1 или a>20a > 20 — сообщить об ошибке ввода.

  • Иначе завести переменную p = 1 и перемножить все числа от a до 20 включительно.

  • (Опционально) Замечание по математике: это то же самое, что 20!(a1)!\dfrac{20!}{(a-1)!}, но вычислять через цикл обычно проще и надёжнее.

Ниже — рабочие варианты на популярных языках.


Python

python
a = int(input().strip())

if not (1 <= a <= 20): print("Ошибка: a должно быть в диапазоне 1..20") else: p = 1 for x in range(a, 21): p *= x print(p)

Python автоматически работает с большими числами, поэтому переполнения не будет.


C++ (с проверкой ввода)

cpp
#include using namespace std;

int main() { long long a; if (!(cin >> a)) return 0;

if (a < 1 || a > 20) { cout << "Ошибка: a должно быть в диапазоне 1..20\n"; return 0; }

long long p = 1; for (long long x = a; x <= 20; ++x) { p *= x; } cout << p << "\n"; return 0; }

Значение не переполнит long long (20! ≈ 2.43×10¹⁸, что меньше 9.22×10¹⁸ для знакового 64-битного типа).


Pascal

pascal
program ProdAto20; var a, x: integer; p: int64; begin readln(a); if (a < 1) or (a > 20) then writeln('Ошибка: a должно быть в диапазоне 1..20') else begin p := 1; for x := a to 20 do p := p * x; writeln(p); end; end.

Пример

Ввод: a = 3
Произведение: 3*4*5*...*20 = 268199440 * (и далее до 20; итоговое значение: 8174960640000 )

(Проверка: это равно 20! / 2!.)

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос