202509-1 商店折扣
题目描述
商店正在开展促销活动,给出了两种方案的折扣优惠。第一种方案是购物满 元减 元;第二种方案是直接打 折,也就是说价格变为原先的 。这里的 均是正整数,并且 ,。
需要注意的是,第一种方案中满减优惠只能使用一次。例如购物满 元减 元时,若挑选了价格总和为 元的物品,只能减免 元,需要支付 元。
小明在商店挑选了价格总和为 元的物品,结账时只能使用一种优惠方案。小明最少需要支付多少钱呢?
输入格式
四行,四个正整数 ,含义见题目描述。
输出格式
一行,一个小数,表示小明最少需要支付多少钱,保留两位小数。
样例输入 1
87910
样例输出 1
3.00
样例输入 2
87211
样例输出 2
2.20
提示
对于所有测试点,保证 ,,。
代码解析
根据题意,分别求出两种方案的价钱,输出其中最小值即可,注意只有在 p >= x 的时候才可以使用第一种方案,第二种方案算出的值是 double。
#include<bits/stdc++.h>using namespace std;int main() {
int x, y, n, p; cin >> x >> y >> n >> p; double a = 999; if (p >= x) a = p - y; double b = p * 0.1 * n; cout << fixed << setprecision(2) << min(a, b);
return 0;}
202509-2 金字塔
题目描述
金字塔由 层石块垒成。从塔底向上,每层依次需要 块石块。请问搭建金字塔总共需要多少块石块?
输入格式
一行,一个正整数 ,表示金字塔的层数。
输出格式
一行,一个正整数,表示搭建金字塔所需的石块数量。
样例输入 1
2
样例输出 1
5
样例输入 2
5
样例输出 2
55
提示
对于所有测试点,保证 。
代码解析
这道题目求的就是 1*1 + 2*2 + 3*3 +…+n*n 的值,for 循环从 1~n 不断累加 i*i 即可。
#include<bits/stdc++.h>using namespace std;int main() {
int n, sum = 0; cin >> n; for (int i = 1;i <= n; i++) sum += i*i; cout << sum;
return 0;}
202506-1 假期阅读
题目描述
小 A 有一本厚厚的书。这本书总共有 页,小 A 一天中 最多只能阅读完其中的 页。小 A 的假期总共有 天 ,他想知道在假期中最多能阅读完这本书的多少页。
输入格式
第一行,一个正整数 ,表示书的页数。
第二行,一个正整数 ,表示小 A 每天最多阅读的页数。
第三行,一个正整数 ,表示小 A 假期的天数。
输出格式
一行,一个整数,表示假期中所能阅读的最多页数。
样例输入 1
832
样例输出 1
6
样例输入 2
19330
样例输出 2
19
提示
对于所有测试点,保证 均不超过 。
代码解析
理论上可以阅读的页数大于书本的总页数,则输出书本的总页数
理论上可以阅读的页数小于书本的总页数,输出理论阅读页数
#include<bits/stdc++.h>using namespace std;int main() {
int n, k, t; cin >> n >> k >> t; if (k * t > n) cout << n; else cout << k*t;
return 0;}
202506-2 值日
题目描述
小杨和小红是值日生,负责打扫教室。小杨每 天值日一 次,小红每 天值日一次。今天他们两个一起值日,请问 至少多少天后,他们会再次同一天值日?
输入格式
第一行,一个正整数 ,表示小杨的值日周期;
第二行,一个正整数 ,表示小红的值日周期。
输出格式
一行,一个整数,表示至少多少天后他们会再次同一天值日。
样例输入 1
46
样例输出 1
12
提示
对于所有测试点,保证 。
代码解析
根据题意,需要求 m 和 n 的最小公倍数,使用枚举法即可
#include<bits/stdc++.h>using namespace std;int main() {
int m, n; cin >> m >> n;
for (int i = max(m, n); i <= m*n; i++) if (i % m == 0 && i % n == 0) { cout << i << endl; break; }
return 0;}
202503-1 图书馆里的老鼠
题目描述
图书馆里有 本书,不幸的是,还混入了一只老鼠,老鼠每 小时能啃光一本书,假设老鼠在啃光一本书之前,不会啃另一本。请问 小时后图书馆里还剩下多少本完整的书。
输入格式
三行,第一行一个正整数 ,表示图书馆里书的数量;
第二行,一个正整数 ,表示老鼠啃光一本书需要的时间;
第三行,一个正整数 ,表示经过的总时间;
输入数据保证 小时后至少会剩下一本完整的书。
输出格式
一行,一个整数,表示 小时后图书馆里还剩下多少本完整的书。
样例输入 1
1023
样例输出 1
8
样例输入 2
524
样例输出 2
3
提示
对于所有测试点,保证 ,保证 小时后至少会剩下⼀本完整的书。
代码解析
这道题易错点在于,题目所求的是还剩多少完整的书,所以对于老鼠啃的书的数量我们应该 向上取整, 注意变量的类型。
#include<bits/stdc++.h>using namespace std;int main() {
double n, x, y; cin >> n >> x >> y; cout << n - ceil(y / x);
return 0;}
202503-2 四舍五入
题目描述
四舍五入是一种常见的近似计算方法。现在,给定 个整数,你需要将每个整数四舍五入到最接近的整十数。例如, 四舍五入后为 , 四舍五入后为 。
输入格式
共 行,第一行,一个整数 ,表示接下来输入的整数个数。
接下来 行,每行一个整数 ,表示需要四舍五入的整数。
输出格式
行,每行一个整数,表示每个整数四舍五入后的结果。
样例输入 1
54358256790
样例输出 1
4060307090
提示
对于所有测试点,保证 ,。
代码解析
数字先加 5,再除以 10,再乘以 10,即可得到四舍五入的整十数。
#include<bits/stdc++.h>using namespace std;int main() {
int n; cin >> n; while (n--) { int a; cin >> a; cout << (a+5)/10*10 << endl; }
return 0;}