十五届蓝桥杯即将开赛,十一届的蓝桥杯国赛的一些巧妙解法。
美丽的2
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语包将所填结果输出即
可。
小蓝特别喜欢2,今年是公元2020年,他特别高兴。他很好奇,在公元1年到公元2020年(包含)中,有多少个年份的数位中包含数字2?
运行限制
最大运行时间:1s
最大运行内存:128M
难度:中等 标签:2020 模拟 国赛
题解
#include <bits/stdc++.h>
using namespace std;
int main()
{
int count = 0;
for (int i = 1; i <= 2020; ++i)
{
int temp = i;
while(temp)
{
int x = temp % 10;
temp = temp/10;
if(x == 2)
{
count++;
break;//重点!!!一旦确定有2就结束本次循环,避免重复计算
}
}
}
cout << count << endl;
return 0;
}
运行结果:
563
合数个数
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语包将所填结果输出即可。
一个数如果除了1和自己还有其他约数,则称为一个合数。例如:1,2,3不是合数,4,6是合数。
请问从1到2020一共有多少个合数。
运行限制
最大运行时间:1s
最大运行内存:128M
难度:困难标签:2020,模拟枚举,国赛
题解
本题正常思维是求合数,把合数累加然后输出结果。
根据合数定义:一个数如果除了1和自己还有其他约数,则称为一个合数
#include <bits/stdc++.h>
using namespace std;
int sushu(int x)
{
int j=x;
int count=0,flag=0;//定义标志,避免重复计数
for(int i=2;i<=j;i++)
{
if(j%i==0&&i!=x&&flag==0)//根据合数定义判断是否为合数
{
flag=1;
count++;
}
}
return count;
}
int main()
{
int sum=0,i;
for(i=2;i<=2020;i++)//从2开始,舍弃1这个约数 简化运算量
{
sum+=sushu(i);
}
cout<<sum;
return 0;
}
运行结果:
1713
天干地支
题目描述
古代中国使用天干地支来记录当前的年份。
天干-共有十个,分别为:甲(ja)、乙(yi)、丙(bing)、丁(ding)、戊(wi)、己(D)、庚(geng)、辛(xin)、王(rn)、癸(gui)。
地支一共有十二个,分别为:子(z)、丑(chu)、寅(yin)、卯(mo)、辰(chn)、已(si)、午(wu)、未(wei)、申(shn)、西(yu)、戌(xi)、亥(hai)。
将天干和地支连起来,就组成了一个天干地支的年份,例如:甲子。
2020年是庚子年。
每过一年,天干和地支都会移动到下一个。例如2021年是辛丑年。
每过60年,天干会循环6轮,地支会循环5轮,所以天干地支纪年每60
年轮回一次。例如1900年,1960年,2020年都是庚子年。
给定一个公元纪年的年份,请输出这一年的天干地支年份。
输入描述
输入一行包含一个正整数,表示公元年份。
其中有,输入的公元年份为不超过9999的正整数。
输出描述
输入一行包含一个正整数,表示公元年份。
输入输出样例
输入:
2020
输出:
gengzi
题解
以样例为基础,结合天干地支规律,列成天干地支两个数组循环推算出天干地支。
#include <iostream>
int main()
{
int year;
std::cin >> year;
std::string heavenly[10] = {"geng", "xin", "ren", "gui", "jia", "yi" , "bing", "ding", "wu", "ji"};
std::string earthlyBranch[12] = {"shen", "you", "xu", "hai", "zi", "chou", "yin", "mou", "chen", "si", "wu", "wei"};
std::cout << heavenly[year % 10] << earthlyBranch[year % 12] << std::endl;
}
标签:std,年份,int,合数,C++,蓝桥,解题,2020,天干地支
From: https://blog.csdn.net/2301_77871667/article/details/137569691