超时且全错,求助!!!
查看原帖
超时且全错,求助!!!
526235
mmdxm楼主2022/8/15 12:40
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
using namespace std;
int z[1000101],len=1,y[1000101];
void quick(int l){
	if(l==1) return;
	int k=l>>1,x=0,i,j;
	quick(k);
	for(i=1;i<=len;i++){
		for(j=1;j<=len;j++){
			y[i+j-1]+=z[i]*z[j];
			y[i+j]+=y[i+j-1]/10;
			if(i+j>len&&y[i+j]!=0) len=i+j;
			y[i+j-1]%=10;
		}
	}
	for(i=1;i<=len;i++){
		z[i]=y[i];
		y[i]=0;
	}
	if(l&1){
		for(i=1;i<=len;i++){
		z[i]=z[i]*2+x;
		x=z[i]/10;
		z[i]%=10;
	    }
	    if(x!=0){
	    	len++;
	    	z[len]=x;
		}
	}
}
int main(){
	int n,i,j,x=0,k;
	scanf("%d",&n);
	z[1]=2;
	quick(n);
	z[1]-=1;
	for(i=1;i<=len;i++){
		if(z[i]<0){
			z[i]+=10;
			z[i+1]--;
		}
		else break;
	}
	printf("%d\n",len);
	for(i=500;i>=1;i--){
		printf("%d",z[i]);
		if(i%50==0&&i!=500) printf("\n");
	}
	return 0;
} 
2022/8/15 12:40
加载中...