试题 A: 跑步训练
本题总分:5 分
【问题描述】
小明要做一个跑步训练。
初始时,小明充满体力,体力值计为 10000。如果小明跑步,每分钟损耗
600 的体力。如果小明休息,每分钟增加 300 的体力。体力的损耗和增加都是
均匀变化的。
小明打算跑一分钟、休息一分钟、再跑一分钟、再休息一分钟……如此循
环。如果某个时刻小明的体力到达 0,他就停止锻炼。
请问小明在多久后停止锻炼。为了使答案为整数,请以秒为单位输出答案。
答案中只填写数,不填写单位。
【答案提交】
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个
整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
//A:3840
//code:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int tili = 10000;
bool tag = true;
int m;
int main() {
while (true) {
if (tili <600 && tag) {
break;
}
if (tag) {
tili -= 600;
m++;
tag = false;
}
else {
tili += 300;
m++;
tag = true;
}
}
cout << m*60 << endl;
return 0;
}
试题 B: 纪念日
本题总分:5 分
【问题描述】
2020 年 7 月 1 日是A组织 成立 99 周年纪念日。
A组织成立于 1921 年 7 月 23 日。
请问从 1921 年 7 月 23 日中午 12 时到 2020 年 7 月 1 日中午 12 时一共包
含多少分钟?
【答案提交】
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个
整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
可以使用Excel解
B:52038720
试题 D: REPEAT 程序
本题总分:10 分
【问题描述】
附件 prog.txt 中是一个用某种语言写的程序。
其中 REPEAT k 表示一个次数为 k 的循环。循环控制的范围由缩进表达,
从次行开始连续的缩进比该行多的(前面的空白更长的)为循环包含的内容。
例如如下片段:
REPEAT 2:
A = A + 4
REPEAT 5:
REPEAT 6:
A = A + 5
A = A + 7
A = A + 8
A = A + 9
该片段中从 A = A + 4 所在的行到 A = A + 8 所在的行都在第一行的
循环两次中。
REPEAT 6: 所在的行到 A = A + 7 所在的行都在 REPEAT 5: 循环中。
A = A + 5 实际总共的循环次数是 2
×
5
×
6 = 60 次。
请问该程序执行完毕之后,A 的值是多少?
【答案提交】
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个
整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
与python的语法相似,使用缩进的方式来区分域,题目的意思就是嵌套循环
D:403
试题 F: 整除序列
时间限制: 1.0s 内存限制: 256.0MB 本题总分:15 分
【问题描述】
有一个序列,序列的第一个数是 n,后面的每个数是前一个数整除 2,请输
出这个序列中值为正数的项。
【输入格式】
输入一行包含一个整数 n。
【输出格式】
输出一行,包含多个整数,相邻的整数之间用一个空格分隔,表示答案。
【样例输入】
20
【样例输出】
20 10 5 2 1
【评测用例规模与约定】
对于 80% 的评测用例,1 ≤ n ≤ 10^9。
对于所有评测用例,1 ≤ n≤ 10^18。
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main() {
int key;
cin >> key;
while (key) {
cout << key << " ";
key=key>>1;
}
return 0;
}
试题 G: 解码
时间限制: 1.0s 内存限制: 256.0MB 本题总分:20 分
【问题描述】
小明有一串很长的英文字母,可能包含大写和小写。
在这串字母中,有很多连续的是重复的。小明想了一个办法将这串字母表
达得更短:将连续的几个相同字母写成字母 + 出现次数的形式。
例如,连续的 5 个 a,即 aaaaa,小明可以简写成 a5(也可能简写成 a4a、
aa3a 等)。对于这个例子:HHHellllloo,小明可以简写成 H3el5o2。为了方便表
达,小明不会将连续的超过 9 个相同的字符写成简写的形式。
现在给出简写后的字符串,请帮助小明还原成原来的串。
【输入格式】
输入一行包含一个字符串。
【输出格式】
输出一个字符串,表示还原后的串。
【样例输入】
H3el5o2
【样例输出】
HHHellllloo
【评测用例规模与约定】
对于所有评测用例,字符串由大小写英文字母和数字组成,长度不超过
100。
请注意原来的串长度可能超过 100。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
string s;
char pre;
char next;
cin >> s;
char cs[500];
for (int i = 0; i <= s.size()-1;i++) {
cs[i] = s[i];
}
for (int i = 0; i <=s.size() - 1; i++) {
if (i==s.size()-1&&cs[i]<'0'&&cs[i]>'9') {
cout << cs[i];
break;
}
pre = cs[i];
next = cs[i + 1];
if (next>='1'&&next<='9') {
for (int j = 0; j < next-'0';j++) {
cout << pre;
}
i += 1;
}
else {
cout << pre;
}
}
return 0;
}
试题 H: 走方格
时间限制: 1.0s 内存限制: 256.0MB 本题总分:20 分
【问题描述】
在平面上有一些二维的点阵。
这些点的编号就像二维数组的编号一样,从上到下依次为第 1 至第 n 行,
从左到右依次为第 1 至第 m 列,每一个点可以用行号和列号来表示。
现在有个人站在第 1 行第 1 列,要走到第 n 行第 m 列。只能向右或者向下
走。
注意,如果行号和列数都是偶数,不能走入这一格中。
问有多少种方案。
【输入格式】
输入一行包含两个整数 n, m。
【输出格式】
输出一个整数,表示答案。
【样例输入】
3 4
【样例输出】
2
【样例输入】
6 6
【样例输出】
0
【评测用例规模与约定】
对于所有评测用例,1 ≤ n ≤ 30, 1 ≤ m ≤ 30。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int cnt = 0;
int zx,zy;
void dfs(int x, int y) {
if (x==zx && y==zy) {
cnt++;
return;
}
if (x%2==0 && y%2==0) {
return;
}
if (x+1<=zx) {
dfs(x + 1, y);
}
if (y+1<=zy) {
dfs(x, y + 1);
}
}
int main() {
cin >> zx >> zy;
//偶数是走不到终点的
if (zx%2==0 && zy%2==0) {
cout << 0;
return 0;
}
dfs(1,1);
cout << cnt;
return 0;
}