数列找规律,数学高手进!
- 提问者网友:箛茗
- 2021-05-11 14:02
例如:
第一行: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语言的一个函数实现
(不能用从第一个数依次往后推算这种方法)
我在这里先谢谢了!
并不知道给出的数是第几个数
- 五星知识达人网友:大漠
- 2021-05-11 15:37
#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();} 已调试,简洁度还需你再修改
再问: 不能从第一个数往后推算