当前位置:   article > 正文

SDJZ 找规律填数字

SDJZ 找规律填数字

题目描述

小宇正在读小学,今天老师布置了几道数学题目。小宇平时上课经常不专心,这些他可发愁了,怎么办呢?看看你能不能帮帮他。
题目是给你一组有规律序列的前面5个整数,请你给出它后面跟着的5个整数,如:1,2,3,4,5,___,___,___,__,___。这是个等差数列,后面应该是6,7,8,9,10,就这么简单。而且现在小宇已经知道这串序列要么是等差数列,要么是等比数列或者是斐波那契数列。

输入格式

输入包含多组测试数据。每组输入5个整数,每个数字之间隔一个空格,当5个数字都为0时输入结束。

输出

对于每组输入,输出这串数列的后面5个数字,每个数字之间隔一个空格。

样例输入

1 2 3 4 5
1 2 4 8 16
1 2 3 5 8
0 0 0 0 0

样例输出

6 7 8 9 10
32 64 128 256 512
13 21 34 55 89

 

代码:

  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4. int main()
  5. {
  6. double a[10];
  7. while(cin>>a[0]>>a[1]>>a[2]>>a[3]>>a[4])
  8. {
  9. if((a[0]==0)&&(a[1]==0)&&(a[2]==0)&&(a[3]==0)&&(a[4]==0))
  10. {
  11. break;
  12. }
  13. else if((a[0]==1)&&(a[1]==1)&&(a[2]==1)&&(a[3]==1)&&(a[4]==1))
  14. {
  15. for(int u=5;u<10;u++)
  16. {
  17. cout<<"1 ";
  18. }
  19. cout<<endl;
  20. }
  21. else
  22. {
  23. double d1=a[4]-a[3],d2=a[3]-a[2],d3=a[2]-a[1],d4=a[1]-a[0];
  24. double q1=a[4]/a[3],q2=a[3]/a[2],q3=a[2]/a[1],q4=a[1]/a[0];
  25. if((d1==d2)&&(d2==d3)&&(d3==d4))
  26. {
  27. double n=d1;
  28. for(int i=5;i<10;i++)
  29. {
  30. a[i]=a[0]+n*i;
  31. cout<<a[i]<<" ";
  32. }
  33. cout<<endl;
  34. }
  35. else if((q1==q2)&&(q2==q3)&&(q3==q4))
  36. {
  37. double q=q1;
  38. for(int j=5;j<10;j++)
  39. {
  40. a[j]=a[0]*pow(q,j);
  41. cout<<a[j]<<" ";
  42. }
  43. cout<<endl;
  44. }
  45. else
  46. {
  47. double d[10];
  48. d[0]=a[0];
  49. d[1]=a[1];
  50. for(int t=2;t<10;t++)
  51. {
  52. d[t]=d[t-1]+d[t-2];
  53. }
  54. for(int y=5;y<10;y++)
  55. {
  56. cout<<d[y]<<" ";
  57. }
  58. cout<<endl;
  59. }
  60. }
  61. }
  62. return 0;
  63. }


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/492893
推荐阅读
相关标签
  

闽ICP备14008679号