T1. 输出整数部分
输入一个双精度浮点数 f f f,输出其整数部分。
时间限制:1 s
内存限制:64 MB
- 输入
一个双精度浮点数 f f f。 0 < f < 100000000 0 < f < 100000000 0<f<100000000。 - 输出
一个整数,表示浮点数的整数部分。 - 样例输入
3.8889
- 样例输出
3
思路分析
此题考查基本输入输出与强制类型转换,属于入门题。
此题只需要在输出时将变量 f
强制转换为 int
类型即可。
/*
* Name: T1.cpp
* Problem: 输出整数部分
* Author: Teacher Gao.
* Date&Time: 2024/03/04 22:10
*/
#include <iostream>
using namespace std;
int main()
{
double f;
cin >> f;
cout << int(f) << endl;
return 0;
}
T2. 疫情集中隔离
A A A 同学 12 12 12 月初从国外回来,按照防疫要求,需要进行 14 14 14 天集中隔离,请你实现一个程序,根据回国的时间计算集中隔离结束的日期。
比如, 12 12 12 月 1 1 1 号回来, 1 1 1 号当天开始隔离, 14 14 14 号是隔离的最后一天,因此 14 14 14 号是集中隔离结束的日期。
时间限制:1 s
内存限制:64 MB
- 输入
一个整数 x x x,表示 A A A 同学 12 12 12 月 x x x 号回国。 1 ≤ x ≤ 15 1 ≤ x ≤ 15 1≤x≤15。 - 输出
一个整数 y y y,表示 A A A 同学结束集中隔离的日期,即 12 12 12 月 y y y 号 A A A 结束集中隔离。 - 样例输入
1
- 样例输出
14
思路分析
此题考查算术运算,属于入门题。
此题只需要将变量 x
加上
13
13
13 并输出即可。之所以加
13
13
13 是因为回国当天算隔离的第
1
1
1 天,后续只需要再隔离
13
13
13 天即可,也就是
13
13
13 天后就是隔离的最后一天。
/*
* Name: T2.cpp
* Problem: 疫情集中隔离
* Author: Teacher Gao.
* Date&Time: 2024/03/04 22:12
*/
#include <iostream>
using namespace std;
int main()
{
int x;
cin >> x;
cout << x + 13;
return 0;
}
T3. 字符判断
对于给定的字符,如果该字符是大小写字母或者数字,输出 YES
,否则输出 NO
。
时间限制:1 s
内存限制:64 MB
- 输入
一个字符。 - 输出
按照题目要求输出YES
或者NO
。 - 样例输入
1
1
1
A
- 样例输出
1
1
1
YES
- 样例输入
2
2
2
a
- 样例输出
2
2
2
YES
- 样例输入
3
3
3
1
- 样例输出
3
3
3
YES
- 样例输入
4
4
4
*
- 样例输出
4
4
4
NO
思路分析
此题考察分支结构,属于入门题。不过分类较多,较为复杂。思路与同年 6 6 6 月份考试的 T3 一致,可以参考 2021 年 6 月青少年软编等考 C 语言一级真题解析中的 T3。
/*
* Name: T3.cpp
* Problem: 字符判断
* Author: Teacher Gao.
* Date&Time: 2024/03/04 22:13
*/
#include <iostream>
using namespace std;
int main()
{
char ch;
cin >> ch;
if ('0' <= ch && ch <= '9') {
cout << "YES" << endl;
}
else if ('A' <= ch && ch <= 'Z') {
cout << "YES" << endl;
}
else if ('a' <= ch && ch <= 'z') {
cout << "YES" << endl;
}
else {
cout << "NO" << endl;
}
return 0;
}
T4. 统计数
给定一个数的序列 S S S,以及一个区间 [ L , R ] [L, R] [L,R],求序列中介于该区间的数的个数,即序列中大于等于 L L L 且小于等于 R R R 的数的个数。
时间限制:1 s
内存限制:64 MB
- 输入
第一行 3 3 3 个整数 n , L , R n, L, R n,L,R,分别表示序列的长度,区间的左端点,区间的右端点。 0 < n ≤ 10000 0 < n ≤ 10000 0<n≤10000, 1 ≤ L ≤ R ≤ 1000000 1 ≤ L ≤ R ≤ 1000000 1≤L≤R≤1000000。
第二行 n n n 个正整数,表示序列里的每一个数,每个数小于等于 10000000 10000000 10000000。 - 输出
输出一个整数,表示序列中大于等于 L L L 且小于等于 R R R 的数的个数。 - 样例输入
5 1 10 11 8 1 10 16
- 样例输出
3
思路分析
此题考查循环结构,以及分支结构判断范围,属于入门题。
此题需要依次判断输入的每个数 x
。若 x
大于等于
L
L
L 并且小于等于
R
R
R ,则将 x
累加。
/*
* Name: T4.cpp
* Problem: 统计数
* Author: Teacher Gao.
* Date&Time: 2024/03/04 22:17
*/
#include <iostream>
using namespace std;
int main()
{
int n, L, R, x;
cin >> n >> L >> R;
int tot = 0;
for (int i = 1; i <= n; i++) {
cin >> x;
if (L <= x && x <= R) {
tot++;
}
}
cout << tot << endl;
return 0;
}
T5. 最大质因子
质因子是指能整除给定正整数的质数。而最大质因子是指一个整数的所有质因子中最大的那个。
比如 30 30 30 的质因子有 2 2 2, 3 3 3, 5 5 5,所以最大质因子就是 5 5 5。
时间限制:1 s
内存限制:64 MB
- 输入
一个整数 n n n。 2 ≤ n ≤ 10000 2 ≤ n ≤ 10000 2≤n≤10000。 - 输出
n n n 的最大质因子 - 样例输入
30
- 样例输出
5
思路分析
此题考查质数判断,需要用到循环结构,属于一般应用题。
此题可以用循环遍历从
n
n
n 到
2
2
2 的所有整数,依次判断每个整数 i
是否为 n
的因子。若是 n
的因子,则继续判断 i
是否为质数。若为质数,则输出 i
即可结束程序。
思路与同年
9
9
9 月份考试的 T5 大体相同,只是需要在判断 i
是否为质数之前先判断一下 i
是否为 n
的因子。质数判断过程的分析可以参考 2021 年 9 月青少年软编等考 C 语言一级真题解析中的 T5。
/*
* Name: T5_1.cpp
* Problem: 最大质因子
* Author: Teacher Gao.
* Date&Time: 2024/03/04 22:20
*/
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
for (int i = n; i >= 2; i--) {
if (n % i != 0) {
continue;
}
bool flag = 1;
for (int j = 2; j * j <= i; j++) {
if (i % j == 0) {
flag = 0;
break;
}
}
if (flag) {
cout << i << endl;
break;
}
}
return 0;
}
此题还可以采用质因子分解的方式求解。具体来说,我们可以设置一个变量 ans
用于记录答案,然后用循环遍历从
2
2
2 到
n
n
n 的所有整数,依次判断每个整数
i
i
i 是否为
n
n
n 的因子。若是
n
n
n 的因子,则更新一次答案,并将所有因子
i
i
i 从
n
n
n 中除去。当循环结束后,输出变量 ans
即可。在这个过程中不需要判断
i
i
i 是否为质数,并且
n
n
n 会不断地缩小,因此均摊情况下效率更高。
/*
* Name: T5_2.cpp
* Problem: 最大质因子
* Author: Teacher Gao.
* Date&Time: 2024/03/23 08:56
*/
#include <iostream>
using namespace std;
int main()
{
int n, ans;
cin >> n;
for (int i = 2; i <= n; i++) {
while (n % i == 0) {
ans = i;
n /= i;
}
}
cout << ans << endl;
return 0;
}