首先看题目,直接上图
看题,不难。主要就是一个数列的规律,以前做过类似的,所以毫不犹豫就直接开始找规律,仔细观察会发现从第三项开始就是前两项的和,试一下发现到后面不是这个规律;继续观察,从第四项开始就是前三项的和,依次检验可以得到规律正确的结果,即
a[n]=a[n-1]+a[n-2]+a[n-3](n>3);
然后写代码,结果错了,话不多说,上图
单看,怎样都对,但是我忽略了一点,就是题目要求:%lld。
错的亏也不亏,审题认不认真本来就是能力的一部分,因为粗心没能第一时间答出题目,这次是一次警告,下次绝对不要再犯,下面 奉上正确答案
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#include
<stdio.h>
intmain()
{
long
long
int
n,j;
long
long
int
a[51];
while(scanf("%lld",&n)!=EOF)
{
a[1]=0;
a[2]=1;
a[3]=1;
for(j=4;j<=n;j++)
{
a[j]=a[j-1]+a[j-2]+a[j-3];
}
printf("%lld\n",a[n]);
}
return
0;
}
|
这道题,相信只要你用心就一定能看懂,也不需要我特别的解释了,简而言之就是一道 找规律的数列题。