【题目描述】
【输入格式】
输入共一行,两个正整数 a,b
【输出格式】
【输入输出样例】
输入1
10 9
输出1
1000000000
输入2
23333 66666
输出2
-1
【方法一】50分
思路:由题目可看出,有一部分测试点会大于十的九次方的,只需输出“-1”即可
定义两个无意义的变量输入,不进行任何计算,输出“-1”。
由于样例有不少“-1”可以骗到50分(虽然这么简单的题好像除了我没人没AC吧)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
cout<<"-1";
return 0;
}
【方法二】
思路:运用for循环实现计算乘方,每次循环判断是否大于十的九次方(即1000000000)
如果大于,直接输出“-1”,结束程序,return 0。
如果循环到最后,那么这个数就是小于十的九次方的,输出乘方。
【核心代码】
for(int i=0;i<m;i++)
{
sum=sum*n;//sum是结果
if(sum>1000000000)
{
cout<<"-1";
return 0;
}
}
cout<<sum;
return 0;
【完整代码】
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
long long sum=1;
for(int i=0;i<m;i++)
{
sum=sum*n;
if(sum>1000000000)
{
cout<<"-1";
return 0;
}
}
cout<<sum;
return 0;
}
【注意】
一定开longlong
不开扣十分
【题目地址】
[CSP-J 2022] 乘方 - 洛谷https://www.luogu.com.cn/problem/P8813看都看到这了,点个赞再走呗!
谢谢你