2020年蓝桥杯C/C++ 大学C组 国赛试题

自己平时还练少了,做了3个题目直接凉凉。。。第3个题目,好像还没有判断下标是否越界,彻底凉凉。

试题A:美丽的2

目录

试题A:美丽的2

试题B:合数个数

试题C:扩散

试题 D: 阶乘约数

试题 E: 本质上升序列

试题F:天干地支

试题G:重复字符串

试题H:皮亚诺曲线距离

试题I:补给

试题J:答疑


本题总分:

目录

试题B:合数个数

试题C:扩散

试题 D: 阶乘约数

试题 E: 本质上升序列

15 分

试题F:天干地支

G:重复字符串

H:皮亚诺曲线距离

I:补给

J:答疑


试题A:美丽的2

本题总分:5 分

【问题描述】

小蓝特别喜欢 2,今年是公元 2020 年,他特别高兴。
他很好奇,在公元 1 年到公元 2020 年(包含)中,有多少个年份的数位中包含数字 2?

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

 

Answer:563。直接遍历一遍就行了。

 

试题B:合数个数

本题总分:5分

【问题描述】

一个数如果除了1和自己还有其他约数,则称为一个合数。例如:1,2,3不是合数,4,6是合数。

请问从1到2020一共有多少个合数。

【答案提交】

提交一个整数。

 

Answer:1713。跟第1题一样,跑跑就完了,以下噩梦刚开始。

 

试题C:扩散

本题总分:10分

【问题描述】
小蓝在一张无限大的特殊画布上作画。
这张画布可以看成一个方格图,每个格子可以用一个二维的整数坐标表示。
小蓝在画布上首先点了一下几个点:(0, 0), (2020, 11), (11, 14), (2000, 2000)。
只有这几个格子上有黑色,其它位置都是白色的。
每过一分钟,黑色就会扩散一点。具体的,如果一个格子里面是黑色,它就会扩散到上、下、左、右四个相邻的格子中,使得这四个格子也变成黑色(如果原来就是黑色,则还是黑色)。
请问,经过 2020 分钟后,画布上有多少个格子是黑色的。

【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

 

 

试题 D: 阶乘约数

本题总分:10 分

【问题描述】
定义阶乘 n! = 1 × 2 × 3 × · · · × n。
请问 100! (100 的阶乘)有多少个约数。

【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

 

--数值过大,计算机无法直接算出,想想其它方法...唉,算了

 

试题 E: 本质上升序列


本题总分:15 分

【问题描述】
小蓝特别喜欢单调递增的事物。
在一个字符串中,如果取出若干个字符,将这些字符按照在字符串中的顺序排列后是单调递增的,则成为这个字符串中的一个单调递增子序列。
例如,在字符串 lanqiao 中,如果取出字符 n 和 q,则 nq 组成一个单调递增子序列。类似的单调递增子序列还有 lnq、i、ano 等等。
小蓝发现,有些子序列虽然位置不同,但是字符序列是一样的,例如取第二个字符和最后一个字符可以取到 ao,取最后两个字符也可以取到 ao。小蓝认为他们并没有本质不同。
对于一个字符串,小蓝想知道,本质不同的递增子序列有多少个?
例如,对于字符串 lanqiao,本质不同的递增子序列有 21 个。它们分别是 l、a、n、q、i、o、ln、an、lq、aq、nq、ai、lo、ao、no、io、lnq、anq、lno、ano、aio。
请问对于以下字符串(共 200 个小写英文字母,分四行显示):(如果你把以下文字复制到文本文件中,请务必检查复制的内容是否与文档中的一致。在试题目录下有一个文件 inc.txt,内容与下面的文本相同)
tocyjkdzcieoiodfpbgcncsrjbhmugdnojjddhllnofawllbhfiadgdcdjstemphmnjihecoapdjjrprrqnhgccevdarufmliqijgihhfgdcmxvicfauachlifhafpdccfseflcdgjncadfclvfmadvrnaaahahndsikzssoywakgnfjjaihtniptwoulxbaeqkqhfwl
本质不同的递增子序列有多少个?

【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

 

---??想用查找,发现只能递增查找...没有思想

 

试题F:天干地支

本题总分:15分

【问题描述】

古代中国使用天干地支来记录当前的年份。

天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊(wù)、己(jǐ)、庚(gēng)、辛(xīn)、壬(rén)、癸(guǐ)。

地支一共有十二个,分别为:子(zǐ)、丑(chǒu)、寅(yín)、卯(mǎo)、辰(chén)、巳(sì)、午(wǔ)、未(wèi)、申(shēn)、酉(yǒu)、戌(xū)、亥(hài)。

将天干地支连起来,就组成一个天干地支的年份,例如:甲子。

2020年是庚子年。

每过一年,天干和地支都会移动到下一个,例如2021是辛丑年。每过60年,天干会循环6轮,地支会循环5轮,所以天干和地支纪年每60年轮回一次,例如1900年、1960年、2020年都是庚子年。

给定一个公元纪年的年份,请输出这一年关于天干地支的年份。

【输入】

2020

【输出】

gengzi

【输入范围】

1-9999

Answer:直接查表,速度快、代码易懂。不过,我在考场上写的时候,没有判断下标是否越界???彻头彻尾的凉了。

#include 
#include 
using namespace std;
int main()
{
	string Sky[10]={"jia","yi","bing","ding","wu","ji","geng","xin","ren","gui"};
	string floor[12]={"zi","chou","yin","mao","chen","si","wu","wei","shen","you","xu","hai"};
	string list[10001];
	int year;
	for(int i=2020,j=6,k=0;i<10000;i++,j++,k++)//从2020年填充到9999年 
	{
		if(j==10)
		j=0;
		if(k==12)
		k=0;
		list[i]=Sky[j]+floor[k];
	}
	for(int i=2020,j=6,k=0;i>=0;i--,j--,k--)//从2020年填充到1年 
	{
		if(j<0)
		j=10-1;//下标从0开始 
		if(k<0)
		k=12-1;
		list[i]=Sky[j]+floor[k];
	}
	cin >> year;
	cout << list[year] << endl;
	return 0;
} 

试题G:重复字符串

试题H:皮亚诺曲线距离

试题I:补给

试题J:答疑

 

 

你可能感兴趣的:(2020年蓝桥杯C/C++ 大学C组 国赛试题)