Problem Description
A Fibonacci sequence is calculated by adding the previous two members the sequence, with the first two members being both 1.
F(1) = 1, F(2) = 1, F(3) = 1,F(4) = 1, F(n>4) = F(n - 1) + F(n-2) + F(n-3) + F(n-4)
Your task is to take a number as input, and print that Fibonacci number.
F(1) = 1, F(2) = 1, F(3) = 1,F(4) = 1, F(n>4) = F(n - 1) + F(n-2) + F(n-3) + F(n-4)
Your task is to take a number as input, and print that Fibonacci number.
Input
Each line will contain an integers. Process to end of file.
Output
For each case, output the result in a line.
Sample Input
100
Sample Output
4203968145672990846840663646 Note: No generated Fibonacci number in excess of 2005 digits will be in the test data, ie. F(20) = 66526 has 5 digits.
解题分析:从给出的NOTE来看,最大的位数有2005位,而且次数是小于10000的,但是对于这样二维数组10010*300,比这个还有大的话,将会超内存。
比较经典的就是,抛弃以往的满十近一;最大为2005,大约是300的7倍,因此可以采用满10000000进一。同时要注意的是,在结尾输出的时候,要注意将这个7位数全部输出,比方说,其中一个数12345,并不够7位,但是它输出0012345;还有一点就是,临结尾是的进位要单独输出,因为进位是一个数据。
#include<stdio.h>
#include<string.h>
int p[10100][300];
int main()
{
int i,j;
int n,k;
int jinwei;
int temp;
int len,m;
while(scanf("%d",&n)!=EOF)
{
memset(p,0,sizeof(p));
p[1][0]=1;
p[2][0]=1;
p[3][0]=1;
p[4][0]=1;
len=1;
for(i=5;i<=n;i++)
{
jinwei=0;
for(j=0;j<=len;j++)
{
temp=p[i-1][j]+p[i-2][j]+p[i-3][j]+p[i-4][j]+jinwei;
jinwei=temp/10000000;
p[i][j]=temp%10000000;
if(j==len&&jinwei!=0) len++;
}
}
//len=299;
while(p[n][len]==0) len--;
printf("%d",p[n][len]);
for(--len;len>=0;len--)
printf("%07d",p[n][len]);
printf("\n");
}
return 0;
}
Problem Description
A Fibonacci sequence is calculated by adding the previous two members the sequence, with the first two members being both 1.
F(1) = 1, F(2) = 1, F(3) = 1,F(4) = 1, F(n>4) = F(n - 1) + F(n-2) + F(n-3) + F(n-4)
Your task is to take a number as input, and print that Fibonacci number.
F(1) = 1, F(2) = 1, F(3) = 1,F(4) = 1, F(n>4) = F(n - 1) + F(n-2) + F(n-3) + F(n-4)
Your task is to take a number as input, and print that Fibonacci number.
Input
Each line will contain an integers. Process to end of file.
Output
For each case, output the result in a line.
Sample Input
100
Sample Output
4203968145672990846840663646 Note: No generated Fibonacci number in excess of 2005 digits will be in the test data, ie. F(20) = 66526 has 5 digits.