Gravatar
李星昊
积分:139
提交:68 / 148
#include<bits/stdc++.h>
 
using namespace std;
 
int t;
int a,b,c;
 
int main() {
	freopen("csp2022pj_pow.in","r",stdin);
	freopen("csp2022pj_pow.out","w",stdout);
		cin>>a>>b;
		c=(pow(a,b));
		if(c<0) {
			cout<<-1;
		} else {
			cout<<c;
		}
		cout<<endl;
 
	return 0;

}

//很简单的一道题,用pow函数就行了


题目3777  [CSP 2022J]乘方 AAAAAAAAAA      2      评论
2022-11-12 20:09:18    
Gravatar
jaoihios
积分:0
提交:0 / 2

这题我在考试的时候是100,为什么在这只有40

这题不难,但是容易陷入思维陷阱中。就是说,c++中的<cmath>头文件有直接算出乘方的 pow 函数,但是很明显在这里不能直接用。这里的结果很可能会超过10^18,就会输出乱码。因此我们可以定义一个函数panduan,返回值是long long(结果小于等于10^9),里面是a和b,也是long long.代码如下:

    

#define ll long long
ll panduan(ll a,ll b){
	ll ans=1;
	for(ll i=1;i<=b;i++){
		ans=ans*a;
		if(ans>1000000000) return -1;
	}
	return ans;
}
然后就可以了,完整代码交给读者自行锻炼


题目3777  [CSP 2022J]乘方      2      1 条 评论
2022-11-04 11:34:42