202312-1 小杨的考试
题目描述
今天是星期 ,小杨还有 天就要考试了,你能推算出小杨考试那天是星期几吗?(本题中使用 表示星期日)
输入格式
输入 行,第一行一个整数 ;第二行一个整数 。
输出格式
输出一个整数,表示小杨考试那天是星期几。
样例输入 1
16
样例输出 1
7
样例输入 2
53
样例输出 2
1
提示
【样例解释 1】
今天是星期 1,那么 6 天后就是星期日,星期日在本题中用 表示。
【样例解释 2】
今天是星期 5,那么 3 天后就是星期 1。
代码解析
今天是星期
X
,明天就是星期X+1
,一天一天的加就好啦,加 N 次,如果加到了星期 8 就让他重新变成 1
#include<bits/stdc++.h>using namespace std;int main() {
int X, N; cin >> X >> N;
for (int i = 0; i < N; i++) { X++; if (X == 8) X = 1; } cout << X; return 0;}
202312-2 小杨报数
题目描述
小杨需要从 到 报数。在报数过程中,小杨希望跳过 的倍数。例如,如果 , ,那么小杨就需要依次报出 、、。
现在,请你依次输出小杨报的数。
输入格式
输入 行,第一行一个整数 ;第二行一个整数 。
输出格式
输出若干行,依次表示小杨报的数。
样例输入 1
52
样例输出 1
135
样例输入 2
103
样例输出 2
12457810
代码解析
报数的时候判断
i
不是m
的倍数则输出
#include<bits/stdc++.h>using namespace std;int main() {
int n, m; cin >> n >> m; for (int i = 1; i <= n; i++) if (i % m != 0) cout << i << endl;
return 0;}
202309-1 买文具
题目描述
开学了,小明来到文具店选购文具。签字笔 元一支,他需要 支;记事本 元一本,他需要 本;直尺 元一把,他需要 把。小明手里有 元钱。请你通过编程帮小明算算,他手里的钱是否够买他需要的文具。
输入格式
第一行包含一个正整数,是小明购买签字笔的数量。约定 。
第二行包含一个正整数,是小明购买记事本的数量。约定 。
第三行包含一个正整数,是小明购买直尺的数量。约定 。
第四行包含一个正整数 ,是小明手里的钱数(单位:元)。
输出格式
输出 行。如果小明手里的钱够买他需要的文具,则第一行输出 Yes
,第二行输出小明会剩下的钱数(单位:元);否则,第一行输出 No
,第二行输出小明缺少的钱数(单位:元)。
样例输入 1
11120
样例输出 1
Yes10
样例输入 2
1115
样例输出 2
No5
代码解析
每个文具购买的数量乘以对应价钱得到
price
,再比较手里的p
和需要的钱price
。
#include<bits/stdc++.h>using namespace std;int main() {
int x, y, z, q; cin >> x >> y >> z >> q; int price = x*2 + y*5 + z*3;
if (price > q ){ cout << "No" << endl; cout << price - q; } else { cout << "Yes" << endl; cout << q - price; } return 0;}
202309-2 小明的幸运数
题目描述
所有个位数为 的正整数,以及所有 的倍数,都被小明称为“ 幸运数”。小明想知道正整数 和 之间(包括 和 )所有 幸运数的和,你能帮帮他吗?
输入格式
输入 行。第一行包含一个正整数 ,第二行包含一个正整数 ,第三行包含一个正整数 。约定 ,。
输出格式
输出 行,符合题意的幸运数之和。
样例输入 1
7110
样例输出 1
7
样例输入 2
71020
样例输出 2
31
提示
【样例解释 1】
和 之间共有 个 幸运数:。因为 既是 的倍数,个位数又为 。因此,结果为 。
【样例解释 2】
和 之间共有 个 幸运数: 和 。 是 的倍数, 的个位数为 。因此,结果为 。
代码解析
判断个位数为 k :
i % 10 == k
判断 k 的倍数:i % k == 0
#include<bits/stdc++.h>using namespace std;int main() {
int L, R, k, cnt = 0; cin >> k >> L >> R; for (int i = L; i <= R; i++) { if (i % k == 0 || i % 10 == k) cnt += i; } cout << cnt; return 0;}
202306-1 时间规划
题目描述
小明在为自己规划学习时间。现在他想知道两个时刻之间有多少分钟,你能通过编程帮他做到吗?
输入格式
输入 行,第一行为开始时刻的小时,第二行为开始时刻的分钟,第三行为结束时刻的小时,第四行为结束时刻的分钟。输入保证两个时刻是同一天,开始时刻一定在结束时刻之前。时刻使用 小时制,即小时在 到 之间,分钟在 到 之间。
输出格式
输出一行,包含一个整数,从开始时刻到结束时刻之间有多少分钟。
样例输入 1
9596
样例输出 1
1
样例输入 2
95100
样例输出 2
55
代码解析
看下面两个例子理解分钟的计算方法:
2:30 ~ 4:40 相差
(4-2)*60+(40-30)
= 130 分钟 2:40 ~ 4:30 相差(4-2)*60+(30-40)
= 110 分钟
#include<bits/stdc++.h>using namespace std;int main() {
int a1,b1,a2,b2; cin >> a1 >> b1 >> a2 >> b2;
cout << (a2-a1)*60+(b2-b1);
return 0;}
202306-2 累计相加
题目描述
输入一个正整数 ,求形如:
的累计相加。
输入格式
输入一个正整数 。约定 。
输出格式
输出累计相加的结果。
样例输入 1
3
样例输出 1
10
样例输入 2
4
样例输出 2
20
样例输入 3
10
样例输出 3
220
代码解析
这里的内层循环变量
j
每次都会从1
开始重新进行一整轮,只需要用i
控制内层循环次数即可。
#include<bits/stdc++.h>using namespace std;int main() {
int n, s = 0; cin >> n; for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { s += j; } } cout << s; return 0;}
202303-1 每月天数
题目描述
小明刚刚学习了每月有多少天,以及如何判断平年和闰年,想到可以使用编程方法求出给定的月份有多少天。你能做到吗?
输入格式
输入一行,包含两个整数 ,分别表示一个日期的年、月。约定 ,。
输出格式
输出一行,包含一个整数,表示输入月份有多少天。
样例输入 1
2022 1
样例输出 1
31
样例输入 2
2020 2
样例输出 2
29
代码解析
使用数组
a[]
表示每月的天数,如a[1]
代表 1 月的天数
#include<bits/stdc++.h>using namespace std;int main() {
int a[] = {0, 31,28,31,30,31,30,31,31,30,31,30,31}; int y, m; cin >> y >> m; if (y%4==0 && y%100!=0 || y%400==0) a[2] = 29; cout << a[m];
return 0;}
202303-2 长方形面积
题目描述
小明刚刚学习了如何计算长方形面积。他发现,如果一个长方形的长和宽都是整数,它的面积一定也是整数。现在,小明想知道如果给定长方形的面积,有多少种可能的长方形,满足长和宽都是整数?如果两个长方形的长相等、宽也相等,则认为是同一种长方形。约定长方形的长大于等于宽。正方形是长方形的特例,即长方形的长和宽可以相等。
输入格式
输入一行,包含一个整数 ,表示长方形的面积。约定 。
输出格式
输出一行,包含一个整数 ,表示有 种可能的长方形。
样例输入 1
4
样例输出 1
2
样例输入 2
6
样例输出 2
2
提示
【样例 1 解释】
有 种长方形面积为 ,它们的长宽分别为 ,。
【样例 2 解释】
有 种长方形面积为 ,它们的长宽分别为 ,。
代码解析
这道题实际上就是求一个数的因数有多少 “对”(如 6 的因数有 1,6 和 2,3,一共两对)
1 ~ sqrt(s)
中 s 的因数个数就是所求的值(如 16 的算数平方根为 4,1~4 中 16 的因数有 1、2、4,那 16 的因数也就是有 3 对:(1, 16)、(2, 8)、(4, 4)。)
#include<bits/stdc++.h>using namespace std;int main() {
int s, cnt = 0; cin >> s;
for (int i = 1; i <= sqrt(s); i++) { if (s % i == 0) cnt++; }
cout << cnt;
return 0;}