ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

GESP2024年3月认证C++二级( 第三部分编程题(1) 乘法问题)

2026/8/2 12:24:22 拓冰建站 浏览量
GESP2024年3月认证C++二级( 第三部分编程题(1) 乘法问题)


🌟《乘法问题》


一、🎬 小A的乘法挑战

1、小A刚学会乘法,特别开心 😄
老师给了他很多正整数,让他把这些数全部乘起来。


(1)比如:

3 5

(2)小A会算:

3 × 5 = 15

(3)输出结果是15


2、⚠ 但是有一个规定:

(1)如果乘积超过 1000000(100万)
小A就会晕掉 🤯,不会算了。


(2)这时候我们要输出:

>1000000

二、🌟 题目真正要我们做什么?

1️⃣ 读入 n(有多少个数)

int n; cin >> n;


2️⃣ 读入 n 个整数

for (int i = 0; i < n; ++i) { int a; cin >> a;


3️⃣ 把它们全部乘起来

long long product = 1; for (int i = 0; i < n; ++i) { int a; cin >> a; product *= a; }


4️⃣ 如果乘积 > 1000000
输出:>1000000

否则
输出乘积

long long product = 1; for (int i = 0; i < n; ++i) { int a; cin >> a; if (product * a > 1000000) { cout << ">1000000" << endl; return 0; } product *= a; }

三、🧠 实例说明

1、假设输入:

3 100 100 100

你算算:

100 × 100 = 10000 10000 × 100 = 1000000

刚好 1000000,可以输出。


2、如果输入:

4 100 100 100 2

算到:

1000000 × 2 = 2000000

超过 1000000!

所以要输出:

>1000000

四、🌟 解题关键思想

1、💡 我们可以“边乘边检查”

不要等全部乘完才判断!

如果中途已经超过 1000000,
立刻停止!


2、这样:

✔ 更安全
✔ 不会溢出
✔ 更快


五、🎯 思路步骤图

① product = 1
② 读入一个数 a
③ 如果 product × a > 1000000
立刻输出并结束
④ 否则
product *= a
⑤ 重复


六、🧩 参考程序:

#include <iostream> using namespace std; int main() { int n; cin >> n; // 读入个数 long long product = 1; // 用 long long 防止溢出 for(int i = 0; i < n; i++) { int a; cin >> a; // 先判断是否会超过1000000 if(product * a > 1000000) { cout << ">1000000"; return 0; // 立刻结束程序 } product *= a; // 累乘 } cout << product; return 0; }

七、🌈 为什么要用 long long?

考试中,好习惯是用:

long long

更安全。


八、🎯 本题考察知识点

知识是否重要
for 循环⭐⭐⭐⭐
累乘⭐⭐⭐
提前终止 return⭐⭐⭐⭐
数据类型⭐⭐⭐

九、🧩课后训练题:

(一)、🌟 训练题 1(⭐ 基础版)—— 连加限制

1、📝 题目

输入 n 个正整数,把它们依次相加。

如果和超过 500000,立刻输出:

>500000

否则输出总和。


2、🧠 思路

和乘法题一模一样!

区别:

  • 原来是乘法

  • 现在是加法


3、💻 参考程序

#include <iostream> using namespace std; int main() { int n; cin >> n; long long sum = 0; for(int i = 0; i < n; i++) { int a; cin >> a; sum += a; if(sum > 500000) { cout << ">500000"; return 0; } } cout << sum; return 0; }

4、📌 分析

考察:

  • 累加

  • 提前终止

  • long long


(二)、🌟 训练题 2(⭐⭐)—— 连乘防溢

1、📝 题目

输入 n 个正整数。

如果乘积 ≥ 2000000,输出:

Too Large

否则输出乘积。


2、🧠 关键升级

这题推荐写成:

if(product > 2000000 / a)

避免溢出!


3、💻 参考程序

#include <iostream> using namespace std; int main() { int n; cin >> n; long long product = 1; for(int i = 0; i < n; i++) { int a; cin >> a; if(product > 2000000 / a) { cout << "Too Large"; return 0; } product *= a; } cout << product; return 0; }

4、📌 分析

这是“乘法问题”的安全升级写法。


(三)、🌟 训练题 3(⭐⭐⭐)—— 阶乘限制

1、📝 题目

输入一个整数 n,计算 n!。

如果 n! > 1000000,输出:

Overflow

否则输出 n!。


2、🧠 思路

1 × 2 × 3 × ... × n

边乘边判断。


3、💻 参考程序

#include <iostream> using namespace std; int main() { int n; cin >> n; long long fact = 1; for(int i = 1; i <= n; i++) { if(fact > 1000000 / i) { cout << "Overflow"; return 0; } fact *= i; } cout << fact; return 0; }

4、📌 分析

考察:

  • for 循环

  • 阶乘

  • 乘法判断