首页 > 其他 > 详细

nyoj_114_某种序列_201403161700

时间:2014-03-17 05:21:33      阅读:436      评论:0      收藏:0      [点我收藏+]

 

某种序列

时间限制:3000 ms  |  内存限制:65535 KB
难度:4
 
描述
数列A满足An = An-1 + An-2 + An-3, n >= 3 
编写程序,给定A0, A1 和 A2, 计算A99
 
输入
输入包含多行数据
每行数据包含3个整数A0, A1, A2 (0 <= A0, A1, A2 <= 100000000)
数据以EOF结束
输出
对于输入的每一行输出A99的值
样例输入
1 1 1
样例输出
69087442470169316923566147
来源
水题比赛中较不水的
上传者
hzyqazasdf
 

分析:sum=a+b+c;a=b;b=c;c=sum;

 

bubuko.com,布布扣
#include <stdio.h>
#include <string.h>
#define MAX 1010
int a[MAX],b[MAX],c[MAX],sum[MAX];
void init(int x,int *a)
{
    int i=0;
    while(x)
    {
        a[i++]=x%10;
        x/=10;
    }
}
int main()
{
    int aa,bb,cc;
    while(scanf("%d %d %d",&aa,&bb,&cc)!=EOF)
    {
        int i,j,t;
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        memset(c,0,sizeof(c));
        init(aa,a);init(bb,b);init(cc,c);
        /*if(aa==0&&bb==0&&cc==0)
        {
            printf("0\n");
            continue;
        }*/
        //for(i=0;i<10;i++)
        //printf("%d %d %d ",a[i],b[i],c[i]);
        for(i=3;i<=99;i++)
        {
            memset(sum,0,sizeof(sum));
            for(j=0;j<MAX;j++)
            {
                sum[j]+=(a[j]+b[j]+c[j]);
                if(sum[j]>9)
                {
                    t=sum[j];
                    sum[j]=t%10;
                    sum[j+1]=t/10;
                }
            }
            for(j=0;j<MAX;j++)
            {
                a[j]=b[j];
                b[j]=c[j];
                c[j]=sum[j];
            }
        }
        for(j=MAX-1;j>0&&sum[j]==0;j--);
        for(;j>=0;j--)
        printf("%d",sum[j]);
        printf("\n");
    }
    return 0;
}
//ac
bubuko.com,布布扣

 

//大数问题

nyoj_114_某种序列_201403161700,布布扣,bubuko.com

nyoj_114_某种序列_201403161700

原文:http://www.cnblogs.com/xl1027515989/p/3603617.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!