WA on #5求救!!!
查看原帖
WA on #5求救!!!
1012444
shabi45楼主2024/5/11 12:09
#include<bits/stdc++.h>
using namespace std;
int a[2000001],b[2000001],ans[2000001];
int main(){
	string s;
	int n,dot=-1;
	while(cin>>s>>n){
		memset(a,0,sizeof(a));
		for(int i=0;i<s.length();i++){
			if(s[i]=='.'){
				dot=i;
				break;
			}
		}
		if(dot==-1){
			s+='.';
			dot=s.length()-1;
		}
		int wei=(s.length()-dot-1)*n,biao=0,len;
		for(int i=s.length()-1;i>=0;i--){
			if(i!=dot){
				biao++;
				a[biao]=int(s[i]-'0');
				b[biao]=int(s[i]-'0');
			}
		}
		len=biao;
		for(int i=2;i<=n;i++){
			memset(ans,0,sizeof(ans));
			for(int j=1;j<=len;j++)
				for(int k=1;k<=biao;k++)
					ans[j+k-1]+=(a[j]*b[k]);
			len+=biao;
			for(int i=1;i<=len;i++){
				ans[i+1]+=ans[i]/10;
				ans[i]%=10; 
			} 
			while(len>1&&ans[len]==0) len--;
			for(int i=1;i<=len;i++) a[i]=ans[i];
		}
		if(len<=wei){
			cout<<".";
			for(int i=1;i<=wei-len;i++) cout<<"0";
		}
		int flag=len;
		for(int i=1;i<=len;i++){
			if(ans[i]==0&&i-1<wei) continue;
			else{flag=i;break;}
		}
		for(int i=len;i>=flag;i--){
			cout<<ans[i];
			if(i-1==wei&&i!=flag) cout<<".";
		}
		cout<<endl;
	}
}
2024/5/11 12:09
加载中...