ACM 某种序列
发布日期:2021-09-21 12:44:42 浏览次数:8 分类:技术文章

本文共 1434 字,大约阅读时间需要 4 分钟。

某种序列

时间限制:
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<cstdio>
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<string.h>
  5. #include<string>
  6. #include<utility>
  7. #define MAX   10
  8. #define SUM_MAX 105
  9. #define PUTMAX 50
  10. using namespace std;
  11. int sum[SUM_MAX][SUM_MAX];
  12. pair<int,int> ss(int x, int y,int z,int scale)
  13. {
  14. pair<int, int> p;
  15. p.second = (x + y + z + scale) / MAX;
  16. p.first  = (x + y + z + scale) % MAX;
  17. return p;
  18. }
  19. void divide(int d[], int num)
  20. {
  21. int i = 0;
  22. while (num != 0)
  23. {
  24. d[i] = num % 10;
  25. num = num / 10;
  26. i++;
  27. }
  28. return ;
  29. }
  30. void add()
  31. {
  32. int n = 0;
  33. for (int i = 3;i <= 99;i++)
  34. {
  35. int e = 0;
  36. while(e<= PUTMAX)
  37. {
  38. pair<int, int> temp = ss(sum[i - 3][e], sum[i - 2][e], sum[i - 1][e], sum[i][e]);
  39. sum[i][e] = temp.first;
  40. sum[i][e + 1] = temp.second;
  41. e++;
  42. }
  43. }
  44. return ;
  45. }
  46. int main()
  47. {
  48. //freopen("data.in", "r", stdin);
  49. int a, b, c;
  50. while(scanf("%d%d%d",&a,&b,&c)!=EOF)
  51. memset(sum, 0, sizeof(sum));
  52. divide(sum[0], a);
  53. divide(sum[1], b);
  54. divide(sum[2], c);
  55.     add();
  56. int n = 0;
  57.     for (int i = 0;i<= PUTMAX;i++)
  58. {
  59. if(sum[99][PUTMAX - i]!=0){n = 1;}//定义的比较大所以前面的0就不输出
  60. if (n){printf("%d",sum[99][PUTMAX - i]);}
  61. }
  62. if (!n) { printf("0"); }
  63. printf("\n");
  64. }
  65. return 0;
  66. }

转载地址:https://blog.csdn.net/Dog_dream/article/details/78747405 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Linux Makefile
下一篇:ACM 吝啬的国度

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月20日 04时44分41秒