TEL求调(拒绝P党)
查看原帖
TEL求调(拒绝P党)
1246661
feng_chenShy楼主2025/2/4 12:23
#include <bits/stdc++.h>
using namespace std;
int a[1001],b[1001],c[1001];
int p,l,lb;
int c1(){
	for(register int i=1;i<=1000;i++)	c[i]=0;
	for(register int i=1;i<=l;i++)
		for(register 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;
		}
	int lc=l+lb;
	while(c[lc]==0)	lc--;
	for(register int i=1;i<=lc;i++)	a[i]=c[i];
	return lc>500?500:lc;
}
int c2(){
	for(register int i=1;i<=1000;i++)	c[i]=0;
	for(register int i=1;i<=lb;i++)
		for(register int j=1;j<=lb;j++){
			c[i+j-1]+=b[i]*b[j];
			c[i+j]+=c[i+j-1]/10;
			c[i+j-1]%=10;
		}
	int lc=lb+lb;
	while(c[lc]==0)	lc--;
	for(register int i=1;i<=lc;i++)	b[i]=c[i];
	return lc>500?500:lc;
}
int power(){
	while(p){
		if(p&1)
			l=c1();
		p>>=1;
		lb=c2();
	}
}
int main (){
	cin>>p;
	printf("%d\n",(int)(log10(2)*p+1));
	a[1]=1;
	b[1]=2;
	l=1;
	lb=1;
	power();
	a[1]--;
	for(register int i=500;i>=1;i--){
		printf("%d",a[i]);
		if(!((i-1)%50))	printf("\n");
	}
	return 0;
}

在本地测试310000没超时
但在洛谷就全超了
TIE记录

2025/2/4 12:23
加载中...