零、前言
蓝桥杯省赛选拔在即,紧急加练。
一、数列求值
原题链接:数列求值
1、题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
给定数列 1,1,1,3,5,9,17,⋯,从第 4项开始,每项都是前 项的和。求第 20190324项的最后 4位数字。
2、解题思路
题目是斐波那契数题型的一种变型,只需要用 for 循环按照题意暴力即可。
该题有优化的地方,即本题只是求 第 20190324
的 后四项 所以在统计时,不用把数字全算出来,只需要求后四项即可。
3、AC代码
#include <iostream>
using namespace std;
int main()
{
int a=5,b=9,c=17,t;
for(int i=8;i<=20190324;i++)
{
t=(a+b+c)%10000;
a=b;
b=c;
c=t;
}
cout << t << endl;
return 0;
}
二、质数
原题链接:质数
1、题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5……请你计算第 2019 个质数是多少?
2、解题思路
因为数据不大只是到第 2019
项,直接暴力枚举,先定义一个函数用于素数判定,之后用for循环,枚举直到第2019个素数出现。
3、AC代码
#include <iostream>
#include<cmath>
using namespace std;
int prime(int n)
{
if(n == 0 || n == 1)
return 0;
if(n == 2)
return 1;
for(int i = 2;i<=sqrt(n);i++)
{
if(n%i == 0)
return 0;
}
return 1;
}
int main()
{
int cnt = 1;
for(int i = 2;;i++)
{
if(cnt == 2019 && prime(i))
{
cout<<i<<endl;
break;
}
if(prime(i))
cnt++;
}
return 0;
}
4、代码解析
关于素数判定 只需要判断到 第 sqrt(n) 即可,可以在一定程度上优化代码,具体解释欢迎跳转👉👉👉素数判定
三、饮料换购
原题链接:饮料换购
1、题目描述
乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊 C 型饮料,凭 3 个瓶盖可以再换一瓶 C 型饮料,并且可以一直循环下去(但不允许暂借或赊账)。
请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的 n 瓶饮料,最后他一共能喝到多少瓶饮料。
2、解题思路
3、AC代码