蓝桥杯每日一练之闰年判断和Fibonacci数列

128 阅读2分钟

「这是我参与2022首次更文挑战的第17天,活动详情查看:2022首次更文挑战

💛作者主页:静Yu

🧡简介:CSDN全栈优质创作者、华为云享专家、前端知识交流社区创建者

💛社区地址:bbs.csdn.net/forums/Jing…

第十三届蓝桥杯大赛个人赛省赛比赛将于2022年4月9日(星期六)举办,趁现在寒假的时间抓紧时间备战一下。因为博主本人报名是C/C++组,所以更新所有内容都是C/C++相关知识。题目全部都是蓝桥杯官网题库真题。今天是备战刷题的第十一天。

问题:

给定一个年份,判断这一年是不是闰年。
当以下情况之一满足时,这一年是闰年:
1. 年份是4的倍数而不是100的倍数;
2. 年份是400的倍数。
其他的年份都不是闰年。

输入格式:

输入包含一个整数y,表示当前的年份。

输出格式:

输出一行,如果给定的年份是闰年,则输出yes,否则输出no。

样例输入:

2013

样例输出:

no

样例输入:

2016

样例输出:

yes

解题思路:

非常简单的一道题目,题目已经给出了闰年的判断方式,只需要通过简单的if语句判断一下就可以。

完整代码:

#include <iostream>
using namespace std;
int main()
{
int y;
	cin>>y;
	if(y%4==0&&y%100!=0 ||y%400==0)
		cout<<"yes";
	else
		cout<<"no";
	return 0;
}

问题:

Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。

输入格式:

输入包含一个整数n.

输出格式:

输出一行,包含一个整数,表示Fn除以10007的余数

样例输入:

10 样例输出: 55

样例输入:

22 样例输出: 7704

解题思路:

其实这道题目就是经典的递归例题斐波那切数列,我们用递归思想可以解题,但是运行超时只得了30分。另外一种方法就是迭代的思想,成功拿到满分。

完整代码:

//递归解法
#include<iostream>
using namespace std;
int fib(int n){
	if(n==1) return 1;
	if(n==2) return 1;
	return (fib(n-1)+fib(n-2))%10007;
}
int main(){
	int n;
	cin>>n;
	cout<<fib(n);
	return 0;
}
//迭代
#include <iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	long long a[n];
	a[0] = 1,a[1] = 1;
	for(int i=2;i<n;i++){
		a[i] = (a[i-2]+a[i-1])%10007;
	}
	cout<<a[n-1]<<endl;
	return 0;
} 

image.png