数列找规律,数学高手进!例如:第一行: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
来源:学生作业帮助网 编辑:六六作业网 时间:2024/08/28 22:58:40
数列找规律,数学高手进!例如:第一行: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
数列找规律,数学高手进!
例如:
第一行: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语言的一个函数实现
(不能用从第一个数依次往后推算这种方法)
我在这里先谢谢了!
并不知道给出的数是第几个数
数列找规律,数学高手进!例如:第一行: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
#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();
}
已调试,简洁度还需你再修改