📄 k.c
字号:
#include<stdio.h>
#include<string.h>
int main()
{ static int i , j , n , m , h ,flag, d[5000][1010],lenth[5000],i1,strlenth,i2;
char a[1005], p;
scanf("%d" , &n);
scanf("%c" , &p);
memset(d,0,sizeof(d));
d[0][1001] = 1; d[1][1001] = 1;
lenth[0] = lenth[1] = 1;
m = 2;
for(i = 0 ; i <= 4997; i ++){
for(j = 1001 ; j >= 1 ; j --){
d[i+2][j] = d[i+2][j] + d[i+1][j] + d[i][j];
if(d[i+2][j] > 9){
d[i+2][j] = d[i+2][j] % 10;
d[i+2][j-1] = d[i+2][j-1] + 1;
}
}
m ++;
for(i1=0;d[i+2][i1] == 0;i1++);
lenth[i+2] = 1001 - i1 + 1;
}
for(i = 0 ; i < n ; i ++){
memset(a,'\0',sizeof(a));
fgets(a, sizeof(a), stdin);
h=strlen(a)-1;
strlenth = h;
for(j=0;j<5000;j++){
if(strlenth == lenth[j]){
break;
}
}
flag = 0;
for(;j<5000;j++){
for(i1=0;d[j][i1]==0;i1++);
for(i2=0;i1<1002&&a[i2]!='\n';i1++,i2++){
if(d[j][i1] > a[i2] - 48 || strlenth != lenth[j]){
flag = 1;
break;
}
else if(d[j][i1] < a[i2] - 48){
break;
}
}
if(flag){
break;
}
}
for(i1=0;d[j-1][i1]==0;i1++);
for(;i1<1002;i1++){
printf("%d",d[j-1][i1]);
}
printf("\n");
}
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -