hdu1715大菲波拉契数

高精度加法

对于菲波拉契数,f[i]=f[i-1]+f[i-2];(i>2)
这里的n<1000,还是要使用高精度加法的。
高精度加法和乘法,他们还是有很多相通的地方的。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 1003
int a[N][N];
int main()
{
    memset(a,0,sizeof(a));
    a[1][0]=1;
    a[2][0]=1;
    int  n ;
    for(int i  =   3; i<N;i++)
    {
        int tmp = 0;
        int k = 0;
        for(int j = 0;  j<N;j++)
        {
            tmp = a[i-1][j]+a[i-2][j]+k;
            a[i][j]=tmp%10;
            k =tmp/10;
        }
    }
    scanf("%d",&n);//没有看清楚格式。
    while(scanf("%d",&n)!=EOF)
    {
        int i=N-1;
        while(a[n][i]==0) i--;
        while(i>=0) printf("%d",a[n][i--]);
        printf("\n");
    }
    return 0 ;
}

我们可以,发现,不管是加法还是乘。只要是有关于进位的,我都可以统一设置一个变量K来表示来自低位的进位一个tmp表示当前本位(没有进位的)结果。然后,本位就是tmp%10,然后向高位进位就是k=tmp/10

你可能感兴趣的:(加法,菲波拉契数-高精度)