当前位置: 首页 > news >正文

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 循环

  • 阶乘

  • 乘法判断


http://www.jsqmd.com/news/397144/

相关文章:

  • Java synchronized关键字详解:从入门到原理
  • 题解:洛谷 P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪
  • CSP-J2025游记
  • 题解:洛谷 P4942 小凯的数字
  • P3143 [USACO16OPEN] Diamond Collector S
  • 蛇和锯子的羁绊
  • 题解:洛谷 P2704 [NOI2001] 炮兵阵地
  • 北京字画回收|上门服务,当场现金结算,丰宝斋让你变现无忧 - 品牌排行榜单
  • 题解:洛谷 P1879 [USACO06NOV] Corn Fields G
  • Lambda架构在智能家居大数据处理中的实践
  • 题解:洛谷 P2831 [NOIP 2016 提高组] 愤怒的小鸟
  • 题解:洛谷 P1450 [HAOI2008] 硬币购物
  • 提示工程架构师晋升难?因为你没搞懂这套「成长地图」
  • 大数据领域数据工程的数据迁移工具
  • 探索新高度!AI应用架构师在AI模型持续优化中的突破
  • 企业级Docker镜像仓库Harbor部署实战
  • 惊叹!提示工程架构师让区块链与提示系统结合焕发新活力
  • 探索光伏发电混合储能系统模型:从理论到仿真
  • 题解:洛谷 P1040 [NOIP 2003 提高组] 加分二叉树
  • LangGraph 实战:10分钟打造带“人工审批”的智能体流水线 (Python + LangChain)
  • 惊艳全场!大数据数据采集的实战妙招
  • 题解:洛谷 P1896 [SCOI2005] 互不侵犯
  • 直通上海智推时代:官方联络通道一站式汇总 - 速递信息
  • AI写作后如何添加个人观点让论文更真实?降AI的终极心法
  • 题解:洛谷 P2014 [CTSC1997] 选课
  • 武汉疆灵科技:深耕低空经济 打造无人机,具身智能人形机器人载人无人驾驶航空器维修与维修人才技能培训全国标杆 - 速递信息
  • 精准对接上海智推时代:官方沟通入口全收 - 速递信息
  • 题解:洛谷 P1063 [NOIP 2006 提高组] 能量项链
  • 动态中位数
  • 题解:洛谷 P2015 二叉苹果树