悬关,不知为何过不了
查看原帖
悬关,不知为何过不了
560291
the_Dream_Chaser楼主2023/12/25 16:20

RT

求大佬指点orz

//P1517 高精度求小数的整数幂 
#include<bits/stdc++.h>
using namespace std;
const int N=2200; 
int n;
int a[N],b[N],c[N];
int la,lb,lc,ls;
char s[N];
int main(){
	while(scanf("%s %d",s,&n)!=EOF){
		ls=strlen(s);
		int p;
		for(p=0;p<ls;p++)if(s[p]=='.')break;
		la=0;
		for(int i=0;i<ls;i++){
			if(s[ls-i-1]=='.')continue;//倒序存储 
			la++;
			a[la]=s[ls-i-1]-'0';
		}
		p=(ls-p-1)*n;//小数位置
		for(int i=0;i<=la;i++)c[i]=a[i];
		lc=la;

		for(int op=2;op<=n;op++){
			for(int i=0;i<=lb;i++)b[i]=c[i];
			for(int i=0;i<=lc;i++)c[i]=0;
			lb=lc;
			for(int o=0;o<=lb;o++)cout<<b[o]<<" ";
        	cout<<endl;

			lc=la+lb;
			for(int i=1;i<=la;i++){
				for(int j=1;j<=lb;j++){
					c[i+j-1]+=a[i]*b[j];
					c[i+j]+=c[i+j-1]/10;
					c[i+j-1]%=10;
				}
			}
			while(c[lc]==0&&lc>p)lc--;
		}
		int aa,bb;
		bb=1;
		aa=lc;
		while (c[aa]==0&&aa>p) aa--;
        while (c[bb]==0) bb++;
        for(int i=aa;i>=bb;i--){
        	if(i==p)cout<<".";
        	cout<<c[i];
		}
		cout<<endl;
	}
	return 0;
}	
2023/12/25 16:20
加载中...