lanqiaobei11

[每周例题1]蓝桥杯c++ 600.数列求值

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
给定数列 1, 1, 1, 3, 5, 9, 17, ⋯ 从第 4 项开始,每项都是前 3 项的和。
求第 20190324 项的最后 4 位数字

#include <iostream>
using namespace std;

int main()
{
	int a = 1, b = 1, c = 1,d=0;
	for (int i = 4; i <= 20190324; i++)
	{
        //拿最后四位
		d = (a + b + c)%10000;
        
        //将三位数往前推一位
		a = b;
		b = c;
		c = (a + b + c);
	}
	cout << d << endl;
	return 0;
}

思路:


方法一:

​ 直接定义一个数组将每一次前三位的数加的到的后一位数都添加到数组中去,一直加到20190324次,该数组的总长度为20190324+1位,拿到最后一位对其%10000,即可的到第 20190324 项的最后 4 位数字

方法二:

​ 定义四个变量a,b,c,d,其中a,b,c负责对前三位进行记录,d则负责进行(a+b+c)%10000的操作,这样子d所记录的值便一直是最后一项的最后四位数,每拿一次再将a,b,c,(a+b+c)往前覆盖,最后打印d即可

posted @ 2023-04-09 22:17  风起鹤归  阅读(43)  评论(0)    收藏  举报