2019年第十届C/C++ B组蓝桥杯省赛第3题

大一新生,哈哈,希望明年的蓝桥杯省赛能混个奖,目前在努力刷题,把写的代码记录下来,方便大伙学习,也方便我复习

题目描述
给定数列1,1,1,3,5,9,17,…,从第4项开始,每项都是前3项的和。求
第20190324项的最后4位数字。
题目分析
用数组保存三项值,通过对3取余依次将数字加上去。应为保留最后四位数字,所以每次计算过后需要用10000取余,不然会溢出
题目代码

#include<stdio.h>
int main()
{
	int num[3]={1,1,1};//先将前面三个数给定义初始值
	int d;
	int set=4;
	while (set<=20190324){
		num[set%3]=num[0]+num[1]+num[2];//当set为4时,num[1]=3
		num[set%3]%=10000;              //当set为5时,num[2]=5
		set++;                          //当set为6时,num[0]=9
	}                      //以此类推,最终当set为20190321时
	printf("%d",num[0]);   //因为其恰好能被3整除,输出num[0]
	return 0;
 } 

 题目答案

4659

猜你喜欢

转载自blog.csdn.net/m0_62306856/article/details/121802865