某种序列 -----------------------------------------------Five—菜鸟级

举报
Fivecc 发表于 2022/08/05 22:18:41 2022/08/05
【摘要】    欢迎前往个人搭建博客  Five-great的博客                                   ...

 

 欢迎前往个人搭建博客  Five-great的博客

 

 


 

                                     某种序列

                               时间限制: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 


思路:数组存储,递推 


  
  1. #include<stdio.h>
  2. #include<string.h>
  3. #define M 100000
  4. int sum[5][11];
  5. void f(int x,int a)
  6. { int j=0;while(a)sum[x][j++]=a%M,a=a/M;}
  7. int main()
  8. {
  9. int a,b,c,i,j,n,k,adw;
  10. while(scanf("%d%d%d",&a,&b,&c)==3){
  11. memset(sum,0,sizeof(sum));
  12. if(a==0&&b==0&&c==0){printf("%d\n",0);continue;}
  13. f(0,a);f(1,b);f(2,c);int c1=0,c2=1,c3=2,c4=3;
  14. for(i=3;i<=99;++i){
  15. adw=0;//进位
  16. for(j=0;j<=10;++j){
  17. sum[c4][j]=sum[c1][j]+sum[c2][j]+sum[c3][j]+adw;
  18. adw=sum[c4][j]/M;
  19. sum[c4][j]%=M;
  20. }
  21. c1=(c1+1)%4;c2=(c2+1)%4;c3=(c3+1)%4;c4=(c4+1)%4;//更新滚动
  22. }
  23. for(i=10;i>=0;--i)if(sum[c3][i]!=0)break;
  24. for(j=i;j>=0;--j)
  25. if(j==i)printf("%d",sum[c3][j]);
  26. else printf("%05d",sum[c3][j]);
  27. printf("\n");}
  28. return 0;
  29. }

 

文章来源: fivecc.blog.csdn.net,作者:Five-菜鸟级,版权归原作者所有,如需转载,请联系作者。

原文链接:fivecc.blog.csdn.net/article/details/82824981

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。