B3954 [GESP202403 二级] 乘法问题

· · 题解

欢迎报名洛谷网校,期待和大家一起进步!

:::align{center} :::

本题考察循环结构。

题目要求读入一些数,判断这些数的乘积是否超过 10^6。因此,可以使用循环语句读入这 n 个正整数,将其累乘,判断乘积结果。

需要注意,这些数的乘积可能是非常大的,假设 50 个数字每个数字都是 100,那么其结果是 100^{50},无法使用任何的基本数据类型存储。因此如果乘积的结果大于 10^6,就要果断地输出 >1000000 并且退出循环,否则可能会出现溢出导致计算结果不正确。

参考代码:

int prod = 1;
for (int i = 1; i <= n; i++) {
    int a;
    cin >> a;
    prod *= a;
    if (prod > 1000000) { // 如果乘积结果大于 1000000,则直接退出循环
        cout << ">1000000";
        break;
    }
}
//如果乘积结果不超过 1000000,则输出结果,代码略