CSP-J复赛冲刺必刷题 | P8813 乘方

学习C++从娃娃抓起!记录下CSP-J备考学习过程中的题目,记录每一个瞬间。

附上汇总贴:CSP-J复赛冲刺必刷题 | 汇总_热爱编程的通信人的博客-CSDN博客


【题目描述】

小文同学刚刚接触了信息学竞赛,有一天她遇到了这样一个题:给定正整数 a 和 b,求 a^b 的值是多少。

a^b 即 b 个 a 相乘的值,例如 2^3 即为 3 个 2 相乘,结果为 2×2×2=8。

“简单!”小文心想,同时很快就写出了一份程序,可是测试时却出现了错误。

小文很快意识到,她的程序里的变量都是 int 类型的。在大多数机器上,int 类型能表示的最大数为 2^31−1,因此只要计算结果超过这个数,她的程序就会出现错误。

由于小文刚刚学会编程,她担心使用 int 计算会出现问题。因此她希望你在 a^b 的值超过 10^9 时,输出一个 -1 进行警示,否则就输出正确的 a^b 的值。

然而小文还是不知道怎么实现这份程序,因此她想请你帮忙。

【输入】

输入共一行,两个正整数 a, ba,b

【输出】

输出共一行,如果 a^b 的值不超过 10^9,则输出 a^b 的值,否则输出 -1。

【输入样例】

10 9

【输出样例】

1000000000

【代码详解】

#include <bits/stdc++.h>
using namespace std;

int main()
{
    long long a, b;
    long long ans = 1;
    cin >> a >> b;
    for (int i=1; i<=b; i++) {
        ans *= a;
        if (ans > 1e9) {
            cout << -1 << endl;
            return 0;
        }
    }
    cout << ans << endl;
    return 0;
}

【运行结果】

10 9
1000000000

猜你喜欢

转载自blog.csdn.net/guolianggsta/article/details/133385392