2025年6月
选择题
第11题
以下程序使用枚举法(穷举法)求解满足条件的三位数,横线处应该填入的是()
for (int i=100; i<=999; i++) {
int a = i / 100;
// ...横线处...
int c = i % 10;
if (a*a + b*b == c*c) {
count++;
}
}
A. int b = (i / 10) / 10;B. int b = (i / 10) % 10;
C. int b = (i % 10) / 10;
D. int b = (i % 10) % 10;
第12题
以下程序模拟了一个简单的小球反弹过程、横线处应该填入的是()
int height = 10;
int distance = 0;
for (int i=1; i<=5; i++) { //模拟5次落地
// ...横线处...
height /= 2;
distance += height;
}
A. distance += height/2;B. distance += height;
C. distance += height*2;
D. distance += height+1;
编程题
第2题
分糖果
有n位小朋友排成一队等待老师分糖果。第i位小朋友想要至少a_i颗糖果,并且分给他的糖果数量必须比分给前一位小朋友的糖果数量更多。老师想知道至少需要准备多少颗糖果才能让所有小朋友都开心。
核心思路:
这是一个典型的贪心或模拟问题。从第一个小朋友开始,依次确定给每个小朋友的糖果数。对于第i个小朋友,他得到的糖果数必须满足两个条件:1. 不少于他想要的a_i颗;2. 比第i-1个小朋友多。因此,第i个小朋友实际得到的糖果数就是 `max(a[i], a[i-1] + 1)`。
4
1 4 3 3
样例输出 1:
16
样例输入 2:
15
3 14 15 9 26 5 35 89 79 32 38 46 26 43 38
样例输出 2:
450
2025年3月
选择题
第15题
一个正整数是美丽数字当且仅当该正整数是9的倍数但不是8的倍数。下面的程序是编写计算n个正整数中美丽数字的数量,横线处应该填入的是()
for (int i=1; i<=n; i++) {
cin >> a;
if (______________________)
cnt++;
}
A. if (a% 9 != 0 && a % 8 != 0)B. if (a % 9 == 0 || a% 8 == 0)
C. if (a% 9 == 0 && a % 8 != 0)
D. if (a% 9 == 0 || a % 8 != 0)
编程题
第2题
词频统计
给定n个单词,你需要找出其中出现次数最多的单词。在本题中,忽略单词中字母的大小写。
核心思路:
这是一个模拟结合数据结构(如`map`)的题目。遍历n个单词,将每个单词统一转换为小写形式,然后使用`map`来存储每个单词出现的次数。在遍历过程中,记录下出现次数最多的单词和其次数。
6
Apple
banana
apple
Orange
banana
apple
样例输出 1:
apple
2024年12月
选择题
第13题
兔子五元一只,鸡三元一只,小鸭子一元三只,现在你有一百元要买一百只、兔子、鸡、鸭子,问兔子、鸡、鸭子各买多少只,每种必须至少一只,下列哪个程序能实现。()。
(注:此题为经典的百钱百鸡问题,考察枚举算法的实现。)
第14题
求小于等于N的素数的方法中,有一种方法是将所有从2到它本身减1的数都除一遍,如果不能整除,就是素数。下列哪个程序,体现了这种方法()
(注:此题考察素数判定的枚举算法。)
第15题
工人工作一天,会得到一个金环作为工资报酬,某个工作需要15天完成,一条15个环的金环项链,为了严格执行每天工作结束时,完成对工人工资的结算,最少需要将金环项链剪裁成几段,每段几个金环()
A. 4段,分别是1、2,4,8B. 15段,每段1个
C. 6段,分别是3、3、3、3、2、1
D. 9段,分别是2、2、2、2、2、2、1、1、1
编程题
第1题
数字替换
小杨有一个包含n个数字的序列A,他想将其中大于k的数字都替换为序列的最大值,将其中小于k的数字都替换为序列的最小值,请你帮他计算出替换后的序列。
核心思路:
这是一个模拟题。首先通过一次遍历找出数组中的最大值和最小值。然后再进行第二次遍历,根据题目描述的规则(大于k或小于k)对数组元素进行替换。
5 0
-2 -1 0 1 2
样例输出:
-2 -2 0 2 2
第2题
打印数字
小杨为数字0,1,2和3设计了一款5×5的网格表示形式。请你将给定的数字字符串转换为对应的图形表示形式。
核心思路:
这是一个典型的模拟和图形输出问题。由于每个数字的图形都是5行,可以外层循环5次,代表输出5行。内层循环遍历输入的数字字符串,根据当前是第几行和当前是什么数字,来拼接出正确的`*`和`.`组合。
1230
样例输出:
.***..***..***..***.
*.*.*..*..*..*.*.*.*
*.*.*.***..***.*.*.*
*.*.*.*....*...*.*.*
.***..***..***..***.
2024年9月
选择题
第11题
陈A歹种植一批农作物,第一天需要浇水一次,随后的两天(第2、第3天),每天需要浇水2次,再随后的3天(第4、第5、第6天),需要每天浇水3次,这样持续下去。请问在100天里,总共浇了多少次水()
A. 994B. 996
C. 995
D. 945
第14题
有ABCD4个人,其中一个是小偷,每个人说一句话,只有小偷说的是假话,其中A说:不是我。B说:是C。C说:是D。D说:C瞎说。请问谁是小偷()。
A. AB. B
C. C
D. D
编程题
第1题
平衡序列
一个序列是平衡的当且仅当存在一个位置i,使得序列前i个数字的总和等于i+1到末尾数字的总和。请你判断序列是否是平衡的。
核心思路:
这是一个枚举题。可以先计算出整个序列的总和`sum`。然后从头开始遍历,用变量`prefix_sum`累加前缀和,在每个位置i都判断`prefix_sum * 2 == sum`是否成立。
3
3
1 2 3
4
2 3 1 4
5
1 2 3 4 5
样例输出:
Yes
Yes
No
第2题
回文拼接
判断一个字符串是否由两个长度至少为2的回文串前后拼接而成。
核心思路:
这是一个枚举题。可以枚举所有可能的分割点。对于每个分割点,检查它分割出的前后两个子串是否都为回文串,并且长度都满足要求。
4
abcd
aabbb
aaac
abcdd
样例输出:
No
Yes
No
No
2024年6月
选择题
第2题
下面流程图在yr输入2024时,可以判定yr代表闰年,并输出2月是29天,则图中菱形框中应该填入()。
(注:此题考察闰年判断算法的流程图描述。)
A. (yr%400==0) || (yr%4==0)B. (yr%400==0) || (yr%4==0 && yr%100!=0)
C. (yr%400==0) && (yr%4==0)
D. (yr%400==0) && (yr%4==0 && yr%100!=0)
第6题
下列流程图的输出结果是()。
(注:此题为流程图形式的算法,包含两层循环,要求计算最终结果。)
A. 5B. 10
C. 20
D. 30
判断题
第10题
把整数3025从中剪开分为30和25两个数,此时再将这两数之和平方,计算结果又等于原数…这样的数叫“雷劈数”。可以使用枚举的方法求出所有符合这样条件的四位数。()
2024年3月
判断题
第3题
下面C++代码可以计算1到100的累加和,采用的是穷举法。
int i,sum=0;
for(int i=1; i <= 100; i++)
sum += i;
cout << sum << endl;
编程题
第1题
字母求和
对于一个小写字母,其值为字母顺序(a=1, b=2..)。对于一个大写字母,其值为ASCII码的相反数(A=-65..)。给一个字符串,计算所有字母值的总和。
核心思路:
这是一个模拟题。遍历输入的字符串,对每个字符进行判断:如果是小写字母,则`sum += ch – ‘a’ + 1`;如果是大写字母,则`sum -= ch`。
3
aAc
样例输出:
-61
第2题
完全平方数
给定一个序列A,他想要知道其中有多少对下标组合<i,j> (i<j),使得 A_i + A_j 是完全平方数。
核心思路:
这是一个枚举题。使用两层嵌套循环,枚举所有可能的下标对(i, j)且满足i<j。对每一对数字的和,判断其是否为完全平方数。
5
1 4 3 3 5
样例输出:
3
2023年12月
选择题
第4题
执行下面C++代码输出是( )。
int temp=0;
for(int i=1;i<7;i++)
{
for(int j=1;j<5;j++)
{
if (i/j==2)
{
temp++;
}
}
}
cout<<temp<<endl;
A. 6B. 5
C. 4
D. 3
编程题
第1题
小猫分鱼
海滩上一堆鱼,N只小猫来分。第k只小猫把当前剩下的鱼平均分为N份,若多了i个,则扔掉i个,拿走一份。问海滩上最少有多少鱼。
核心思路:
这是一个倒推的数学问题,也可以用枚举法解决。我们可以枚举第N只小猫拿走的鱼的数量k,从1开始递增。根据k可以倒推出第N-1只小猫分鱼前有多少条,再推出第N-2只…直到第一只。在倒推的每一步,都需要检查鱼的数量是否满足题目条件(即 `当前鱼数 * N / (N-1) + i` 是否为整数)。第一个能成功倒推回第一只小猫的k值,所对应的初始鱼数就是答案。
2
1
样例输出 1:
7
样例输入 2:
3
1
样例输出 2:
25
第2题
单位转换
小杨的作业是做单位转换,只涉及将更大的单位转换为更小的单位。请你帮忙完成单位转换的程序。
核心思路:
这是一个字符串处理和模拟题。循环N次,每次读取输入的数值x、单位1和单位2。通过if-else或map判断单位1和单位2的组合,确定换算倍率,然后计算`x * 倍率`并按格式输出。
2
1 km=?mm
1 m=?mm
样例输出 1:
1 km=1000000mm
1 m=1000mm
2023年9月
选择题
第2题
下列流程图的输出结果是?()
(注:流程图描述了一个循环:s的初始值为1, a的初始值为5。当a>=4时,执行s=s*a, a=a-1。要求最终s的输出值。)
A. 60B. 20
C. 5
D. 1
判断题
第8题
著名的哥德巴赫猜想:任一大于2的偶数都可写成两个素数之和。我们可以通过枚举法来证明它。
编程题
第1题
小杨的储蓄
小杨共有N个储蓄罐,编号0到N-1。第i天他会向编号a_i的储蓄罐存入i元钱。过了D天后,求每个储蓄罐里有多少钱?
核心思路:
这是一个直接的模拟题。使用一个大小为N的数组,数组下标对应储蓄罐编号。循环D天,第i天时读入储蓄罐编号a_i,然后给对应数组元素加上i元即可。
2 3
0 1 0
样例输出 1:
4 2