题解:
题目分两部分思考:
(1)写出算法表达每一项的值
(2)如何求第20190324项的最后4位数字。
从第4项开始,每项为前三项的和。即表达为a=i+j+k,(i为前三项第三项,j为前三项第二项,k为前三项第一项),在这里就用到值的交换,每循环完一次,就进行一次值的交换,形成递进的感觉。具体为:i=j,j=k,k=a;(注意顺序不要出错)。注意a=4(表示从第4项开始)。
求最后4位数字,一般运用**%符号,取最后4位即%10000**。(如果不理解,可随机取个数35421来测试一下,%10,%100,%1000,%10000试试看,测试就会发现有多少个零,就可以得几位数)。
(题外话,本来我是想用数组的,可是数组太大,我调不出来,嫌麻烦我就撤了,,,)
代码实现:
#include<stdio.h>
int main()
{
int a,i,j,k;
i=j=k=1;
int n;
for(n=4;n<=20190324;n++)
{
a=i+j+k;
if(a>=10000)
{
a%=10000;
}
i=j;//前三项的第三项
j=k;//前三项的第二项
k=a;//前三项的第一项
}
printf("%d",a);
return 0;
}
结果: