WA#2#5
查看原帖
WA#2#5
884868
封禁用户楼主2024/7/18 09:56
#include <bits/stdc++.h>
#define Len 1300
using namespace std;
void input(int x[]){
	string s;
	cin>>s;
	for(int i=0;i<s.size();i++)
		x[s.size()-i-1]=s[i]-'0';
}
void print(int x[]){
	int i;
	for(i=Len-1;i>=1;--i)
		if(x[i]!=0)
			break;
	for(;i>=0;--i)
		cout<<x[i];
}
void add(int a[],int b[],int c[]){
	for(int i=0;i<Len-1;++i){
		c[i]+=a[i]+b[i];
		if(c[i]>=10){
			c[i+1]=1;
			c[i]-=10;
		}
	}
}
void sub(int a[],int b[],int c[]){
	for(int i=0;i<Len-1;++i){
		c[i]+=a[i]-b[i];
		if(c[i]<0){
			c[i+1]=-1;
			c[i]+=10;
		}
	}
}
void nul(int a[],int b[],int c[]){
	for(int i=0;i<Len-1;++i){
		for(int j=0;j<=i;++j)
			c[i]+=a[j]*b[i-j];
		if(c[i]>=10){
			c[i+1]=c[i]/10;
			c[i]%=10;
		}
	}
}
string g;
int a[Len],b[Len],c[Len],n,lena,cnt,jj,lenc,flag;
bool sss;
int main(){
	std::ios::sync_with_stdio(0);
	while(cin>>g>>n){
		if(n==0){
			cout<<1<<'\n';
			continue;
		}
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
		memset(c,0,sizeof(c));
		lena=lenc=cnt=flag=sss=jj=0;
		string s,k;
		for(int i=0;i<g.size();i++){
			if(g[i]=='.'){
				sss=1;
				break;
			}
			if(g[i]!='0')
				flag=1;
			if(flag==1){
				s+=g[i];
			}
		}
		flag=0;
		for(int i=g.size()-1;i>=0;i--){
			if(g[i]=='.'){
				break;
			}
			if(g[i]!='0')
				flag=1;
			if(flag==1){
				k+=g[i];
			}
		}
		
		for(int i=k.size()-1;i>=0;i--)
			s+=k[i];
		lenc=k.size()*n;
		for(int i=0;i<s.size();i++)
			a[s.size()-i-1]=s[i]-'0';
//		print(a);
//		cout<<'\n';
		memcpy(c,a,sizeof(c));
		for(int i=1;i<n;i++){
			memcpy(b,c,sizeof(b));
	//		print(b);
			memset(c,0,sizeof(c));
			nul(a,b,c);
		}
		int i;
		for(i=Len-1;i>=1;--i)
			if(c[i]!=0)
				break;
		jj=i;
		bool ddd=1;
		if(lenc>i+1){
			cout<<'.';
			for(int j=1;j<=lenc-i-1;j++)
				cout<<0;
			ddd=0;
		}
		for(;i>=0;--i){
			cout<<c[i];
			if(++cnt==jj+1-lenc&&ddd==1&&sss==1)
				cout<<'.';
		}
		cout<<'\n';
	}
	return 0;
}
2024/7/18 09:56
加载中...