题目描述:
数列A满足An = An-1 + An-2 + An-3, n >= 3
编写程序,输入A0, A1 和 A2的值1 1 1时, 计算A99的高八位。
key格式:CTF{}
简单的大数相加,代码:
#include<stdio.h>
#include<string.h>
#define N 10000
int str[N][260];
int main(){
memset(str,0,sizeof(str));
str[0][0]=1;
str[1][0]=1;
str[2][0]=1;
int i,j,ans=0,c,n;
for(i=3;i<N;i++){
for(j=0,c=0;j<260;j++){
ans=str[i-1][j]+str[i-2][j]+str[i-3][j]+c;
c=ans/100000000;
str[i][j]=ans%100000000;
}
}
while(scanf("%d",&n)!=EOF){
j=259;
while(!str[n][j])
j--;
printf("%d",str[n][j]);
for(i=j-1;i>=0;i--)
printf("%08d",str[n][i]);
printf("\n");
}
return 0;
}
得出A99=69087442470169316923566147,取前八位,
提交CTF{69087442},通过!