c++【题目描述】 小文同学刚刚接触了信息学竞赛,有一天她遇到了这样一个题:给定正整数 a 和 b ,求 ab 的值是多少。 ab 即 b 个 a 相乘的值,例如 23 即为 3 个 2 相乘,结果为 2×2×2=8 。 “简单!”小文心想,同时很快就写出了一份程序,可是测试时却出现了错误。 小文很快意识到,她的程序里的变量都是 int 类型的。在大多数机器上,int 类型能表示的最大数为 231−1 ,因此只要计算结果超过这个数,她的程序就会出现错误。 由于小文刚刚学会编程,她担心使用 int 计算会出现问题。因此她希望你在 ab 的值超过 109 时,输出一个 ‐1 进行警示,否则就输出正确的 ab 的值。 然而小文还是不知道怎么实现这份程序,因此她想请你帮忙。 【输入】 输入共一行,两个正整数 a , b 。 【输出】 输出共一行,如果 ab 的值不超过 109 ,则输出 ab 的值,否则输出 ‐1 。 【输入样例】 10 9 【输出样例】 1000000000 【提示】 【样例 2 输入】 23333 66666 【样例 2 输出】 -1 【数据范围】 对于 10% 的数据,保证 b=1 。 对于 30% 的数据,保证 b≤2 。 对于 60% 的数据,保证 b≤30 ,ab≤1018 。 对于 100% 的数据,保证 1≤a , b≤109 。
时间: 2024-04-15 12:28:37 浏览: 825
可以使用C++的pow函数来计算a的b次方。然后判断结果是否超过109,如果超过则输出-1,否则输出计算结果。以下是一个示例代码:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
long long result = pow(a, b);
if (result > 1000000000) {
cout << -1 << endl;
} else {
cout << result << endl;
}
return 0;
}
```
在这个代码中,我们使用了long long类型来存储计算结果,以防止整数溢出。同时,使用cmath头文件中的pow函数来计算a的b次方。然后根据计算结果判断是否超过109来输出对应的结果。
阅读全文