编程题 共5道

01 02 03 04 05

103 | 202503C语言二级真题-考试
编程题 共5道
01

投票


本题请你实现一个简单的投票统计工具:投票同意的人输入 1,反对的人输入 0。简单多数胜。

时间限制:1000

内存限制:65536

输入

输入在一行中给出一系列的投票值,1 表示同意,0 表示反对,-1 表示结束。

输出

统计并输出投票的结果:如果同意的人多就输出 `Yes`;反对的人多就输出 `No`;平票就输出 `Tie`。然后在第二行输出同意的人数和反对的人数,其间隔 1 个冒号 `:`。

样例输入

样例#1:
1 0 0 1 1 -1

样例#2:
0 0 0 1 -1

样例#3:
1 1 1 0 0 0 -1
样例输出
样例#1:
Yes
3:2

样例#2:
No
1:3

样例#3:
Tie
3:3


0分
登录后作答
02

千年一遇对称日


在 2021 年 12 月 02 日这天(20211202),有人发了这么一张图,上书“千年一遇对称日,万事圆满在今朝”。话是挺吉利的,但好像下一个对称日并不需要等上一千年…… 下面任给一个人的生卒年份,请你列出来这个人一辈子经过的所有对称日。

时间限制:1000

内存限制:65536

输入

输入第一行给出一个人的名字,是由不超过30个字符的英文字母和空格组成的、以回车结束的非空字符串。第二行按 `yyyymmdd - yyyymmdd` 的格式给出这个人的生卒年(`yyyy`)、月(`mm`)、日(`dd`)。 虽然生卒日期可能是虚构的,但题目保证出生日期在去世日期之前,且每个日期都是合法的,从 `00010101` 到 `99991231`。注意这里遵循“四年一闰,百年不闰,四百年再闰”的规则定义闰年,即年份是 4 的倍数,且不是 100 的倍数的,为普通闰年;年份是整百数的,必须是 400 的倍数才是闰年。闰年跟普通年的区别就是 2 月有 29 天。

输出

首先在第一行原样输出这个人的名字。随后按照时间顺序,每行输出该人所经历的一个对称日,格式与输入格式相同。注意:生卒日期也包含在内。

样例输入

Katherine Johnson
19180826 - 20200224
样例输出
Katherine Johnson
20011002
20100102
20111102
20200202


0分
登录后作答
03

6翻了


“666”是一种网络用语,大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”,意思是“6翻了”,实在太厉害的意思。如果你以为这就是厉害的最高境界,那就错啦 —— 目前的最高境界是数字“27”,因为这是 3 个 “9”!

本题就请你编写程序,将那些过时的、只会用一连串“6666……6”表达仰慕的句子,翻译成最新的高级表达。

时间限制:1000

内存限制:65536

输入

输入在一行中给出一句话,即一个非空字符串,由不超过 1000 个英文字母、数字和空格组成,以回车结束。

输出

从左到右扫描输入的句子:如果有超过 9 个连续的 6,则将这串连续的 6 替换成 27。否则如果句子中有超过 3 个连续的 6,则将这串连续的 6 替换成 9;其他内容不受影响,原样输出。

样例输入

it is so 666 really 6666 what else can I say 6666666666
样例输出
it is so 666 really 9 what else can I say 27


0分
登录后作答
04

不变初心数


不变初心数是指这样一种特别的数,它分别乘 2、3、4、5、6、7、8、9 时,所得乘积各位数之和却不变。例如 18 就是这样的数:18 的 2 倍是 36,3+6=9;18 的 3 倍是 54,5+4=9;…… 18 的 9 倍是 162,1+6+2=9。对于 18 而言,9 就是它的初心。本题要求你判断任一个给定的数是否有不变的初心。

时间限制:1000

内存限制:65536

输入

输入在第一行中给出一个正整数 N(≤ 100)。随后 N 行,每行给出一个不超过 105 的正整数。

输出

对每个给定的数字,如果它有不变的初心,就在一行中输出它的初心;否则输出 `NO`。

样例输入

4
18
256
99792
88672
样例输出
9
NO
36
NO


0分
登录后作答
05

答题卡


新浪微博上有网友发文称:“朋友买了本玻尔X海森堡的物理大佬同人本,送了300道高数题。更绝的是,要做完题目按照答案涂答题卡,涂出一个二维码,扫描二维码才能看到特典,做错了就看不到了……”那张传说中的答题卡如下图所示:

若答案为 4 位整数(位数不足时在前面补足 0),则前两位为横坐标,后两位为纵坐标。若一题有两小问,则第一问答案为横坐标,第二问答案为纵坐标。若答案为分数,则分子为横坐标,分母为纵坐标。

本题就请你根据答案帮助读者填写答题卡。

时间限制:1000

内存限制:65536

输入

输入首先在第一行给出两个正整数:2 < n ≤ 90 为二维码的规模,即二维码是由 n × n 个小方块组成的大方块,左下角的小方块对应坐标 (1, 1),右上角的小方块对应坐标 (n, n);另一个 m(< n2)是答案的个数。最后 m 行,每行按以下格式之一给出一题的答案:或者是一个不超过 4 位的整数;或者是两小问的答案 `答案1;答案2`;或者是一个分数 `分子/分母`。这里保证每个答案都可以解析为一个二维码中的方块位置(即不存在超出二维码范围的坐标)。

输出

输出 n 行,每行 n 个字符,空格用 `.` 表示,涂了答案的黑格用 `#` 表示。

样例输入

5 7
205
3;2
4/5
101
3;3
4/3
5;1
样例输出
.#.#.
.....
..##.
..#..
#...#


0分
登录后作答