作业帮 > 综合 > 作业

数列找规律,数学高手进!

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/12 18:59:09
数列找规律,数学高手进!
例如:
第一行:1 3 4 6 8 9 11 12 14 16 ...
第二行:2 5 7 10 13 15 18 20 23 26 ...
第三行:1 2 3 4 5 6 7 8 9 10 ...
规则是:
(1)第二行数字等于第一行加第三行
(2)第一行数字就是第二行和第一行前面没有的
例如:第一行的6
第一行:1 3 4
第二行:2 5 7
这里有 1,2,3,4,5,x,7
中间差6,所以第一行,第4个数就是6
(3)第三行数字就是1,2,3,4,5,6,7,8...每次增加一
要求:
根据给出的第一行或第二行的第n个数字,如何直接得出第二行或第一行的第n个数字?
(不能用从第一个数依次往后推算这种方法)
特殊要求:
最好能用c语言的一个函数实现
(不能用从第一个数依次往后推算这种方法)
我在这里先谢谢了!
并不知道给出的数是第几个数
#include<stdio.h>#include<conio.h>main(){      int a[100],b[100],c[100];      int i,j,k,n,p,s,q;      printf("please input the number under 100:\n");      scanf("%d",&n);      a[0]=1;      b[0]=2;      c[0]=1;      printf("\n");      if(n==1)      printf("1\n2\n1\n");      else      {          for(k=1;k<=n-1;k++)          c[k]=k+1;          for(j=1;j<=n-1;j++)          {                p=a[j-1]+1;                do                {                           q=0;                           for(s=0;s<=j-1;s++)                           {                                     if(p==b[s]||p==a[s])                               q=q+1;                           }                           if(q==0)                           {                                  a[j]=p;                               b[j]=a[j]+c[j];                           }                           else                           p=p+1;                }                while(q!=0);          }          for(k=0;k<=n-1;k++)          printf("%5d",a[k]);          printf("\n");          for(k=0;k<=n-1;k++)          printf("%5d",b[k]);          printf("\n");          for(k=0;k<=n-1;k++)          printf("%5d",c[k]);          printf("\n");      }       getch();}     已调试,简洁度还需你再修改
再问: 不能从第一个数往后推算