开o2就TLE不开就RE
查看原帖
开o2就TLE不开就RE
1034459
NumsLock楼主2024/8/3 09:34
#include <bits/stdc++.h>
using namespace std;
int read(){
	int r=0,x=1;char c=getchar();
	while(c<'0'||c>'9'){
		if(c=='-')x=-1;
		else x=1;
		c=getchar();
	}
	while(c>='0'&&c<='9')r=(r<<3)+(r<<1)+(c^48),c=getchar();
	return r*x;
}const int N=1500;
double a;
int n,pt;

struct bigNum{
	int s[N],len;
	bigNum(int num=0){
		memset(s,0,sizeof(s));
		len=1;
		s[1]=num;
	}
	bigNum operator*(int b)const{
		bigNum res;
		res.len=len+10;
		for(int i=1;i<=res.len;i++){
			res.s[i]+=s[i]*b;
			res.s[i+1]=res.s[i]/10;
			res.s[i]%=10;
		}res.clean();
		return res;
	}void clean(){
		while(len>1&&!s[len])len--;
	}
};
ostream& operator<<(ostream &out,const bigNum &x){
	int i;
	for(i=x.len;i>0&&i>pt;i--)
		out<<x.s[i];
	if(i){
		out<<".";
		for(i=pt;i>0;i--)
			out<<x.s[i];
	}
}
int main(){
	while(cin>>a>>n){
		pt=0;
		while(fabs(a-round(a))>1e-6){
			pt++;
			a*=10;
		}
		pt*=n;
		bigNum s=1;
		for(int i=1;i<=n;i++)
			s=s*(int)round(a);
		cout<<s<<endl;
	}
		return 0;
}
2024/8/3 09:34
加载中...