蒟蒻求助!!!90分,第二个测试点MLE
查看原帖
蒟蒻求助!!!90分,第二个测试点MLE
377876
lbc20070331楼主2021/12/5 15:50
#include<bits/stdc++.h>
using namespace std;
#define getchar() (p1==p2 && (p2=(p1=buf)+fread(buf,1,1<<22,stdin),p1==p2)?EOF:*p1++)
char buf[(1<<22)],*p1=buf,*p2=buf;
long long f[5090][5090];
int len=1;
inline int read(){
	int x=0,f=1;
	char c;
	c=getchar();
	while(c<'0'||c>'9') {
		if(c=='-') f=-1;
		c=getchar();
	}
	while(c>='0'&& c<='9'){
		x=x*10+c-'0',c=getchar();
	}
	return x*f;
}
void print(int n){
	if(n<0) putchar('-'),n=-n;
	if(n>9) print(n/10);
	putchar('0'+ n%10);
}
void jf(int k){
	int i;
	for(i=1;i<=len;i++){
		f[k][i]=f[k-1][i]+f[k-2][i];
	}
	for(i=1;i<=len;i++){
		if(f[k][i]>=10){
			f[k][i+1]++;
			f[k][i]-=10;
			if(f[k][len+1]) len++;
		}
	}
}
int main()
{
	int n;
	n=read();
	f[0][1]=0;
	f[1][1]=1;
	f[2][1]=2;
	for(int i=3;i<=n;i++){
		jf(i);
	}
	for(int i=len;i>=1;i--){
		print(f[n][i]);
	}
	return 0;
}
2021/12/5 15:50
加载中...