- MysGln 的博客
20241020作业答案
- @ 2024-10-27 13:03:57
B-吃苹果
假设苹果的数目用变量 来表示,那么有:
的时候,应该输出 Today, I ate 0 apple.
的时候,应该输出 Today, I ate 1 apple.
的时候,应该输出 Today, I ate 2 apples.
的时候,应该输出 Today, I ate 3 apples.
可以发现,无论 的值是多少,紫色框圈起来的地方总是要输出的。

区别在于,在 这个条件满足后,后面加了个s。
答案代码
#include <iostream> // 头文件
using namespace std; // 命名空间
int main() {
int x; // 整数变量 x 来表示苹果的数量
cin >> x; // 从键盘读入苹果的数量
cout << "Today, I ate " << x << " apple";
// 先输出总是要输出的
if (x > 1) {
cout << "s"; // 如果 x > 1 这个条件满足,补上s
}
cout << "."; // 不要忘记了末尾的句号
return 0; // 表示程序正常退出
}
E-数字判断
纸质作业第四第五题的合体版,这个题的题意是要求我们记录一下一共多少有个条件被满足,如果都满足则输出 Yes,否则输出 No。
我们需要一个额外的变量,用来表示满足条件的个数,如果某个条件得到满足,我们就让这个变量的值 。
例如样例 的 。
对于第一个条件 ,满足 ✅
对于第二个条件 ,满足 ✅
对于第三个条件 ,满足 ✅
对于第四个条件 ,满足 ✅
四个条件都满足,输出 Yes,如果有个条件不满足则输出 No。
Note:需要注意的是,本题数据范围是 ,会超过 int 的最大值,所以需要用 long long。
答案代码
#include <iostream>
using namespace std;
int main() {
// a,b,c 含义如题所示,cnt 表示有多少个条件被满足,初始化为 0 表示一开始一个都不满足
long long a, b, c, cnt = 0;
cin >> a >> b >> c;
if (a + b + c <= 100) {
// cnt + 1 表示有一个条件满足
cnt = cnt + 1;
}
// 下列代码逻辑相同,满足条件就加上一
if (b % 5 == 0) {
cnt = cnt + 1;
}
if (c % 7 == 0) {
cnt = cnt + 1;
}
if (a - b > b - c) {
cnt = cnt + 1;
}
// 判断 cnt 的个数,如果都满足那么 cnt 应该是 4
if (cnt == 4) {
cout << "Yes";
} else {
cout << "No";
}
return 0;
}
F-等差数列末项计算
数学知识补充
根据题目定义,等差数列是一个前后两个数固定差值的数列。
例如 就是个等差数列,前后两个数字之间的差值为 .
更多的例子还有:
-
,差值
-
,差值
题目给出了第一项和第二项,通过这两个数字,我们可以求出来他们之间固定的差值是多少,下面称这个差值为公差 。
例如样例给出的前两个数字是 和 ,那么公差 ,也就是后一个数字比前一个数字多 。
解题思路
如果没有学习过等差数列,本题依然可以解决。
在纸上找规律,以样例举例,样例的公差 。
第一个数字是
第二个数字是 ,
第三个数字是
第四个数字是
以此类推,每次往后算多一个数字,答案就是上一个数字加多一个公差 。
通过观察,我们可以发现,第四个数字加了三个公差,第三个数字加了两个公差 。
规律就是:第 个数字,需要加上 个公差。
更正式的,我们称第一个数字为 ,公差为 ,那么有这么一个规律,第 个数字是 。
答案代码
#include <iostream>
using namespace std;
int main() {
int a, b, n; // 第一个数字,第二个数字,和要求的第 n 个数字
cin >> a >> b >> n;
int d = b - a; // 后一个数字减前一个数字得到公差
cout << a + (n-1) * d << '\n'; // 根据规律直接求解
return 0;
}
G-小鱼的游泳时间
题意概括:给定一个开始时间和结束时间,问从开始时间到结束时间一共是多少小时多少分钟。
假设开始时间是 小时 分,结束时间是 小时 分,一共会有以下两种情况;
- b <= d
- b > d
对于第一种情况,答案显然就是结束时间的小时 开始时间的小时,结束时间的分钟 开始时间的分钟即可。
对于第二种情况,分钟不够减,我们需要从小时里「借位」,因为分钟转换小时是 进制,所以会让结束时间的分钟加上 。
以样例来说, 点 分开始游泳, 点 分结束游泳。
那么就是第二种情况,小时差为 ,我们需要从 那里借一个 过来。
那么分钟就是 。
答案就是 小时 分。
#include <iostream>
using namespace std;
int main() {
int a, b, c, d;
cin >> a >> b >> c >> d;
// d1 表示小时差
int d1 = c - a;
// d2 表示分钟差
int d2 = d - b;
// 如果开始时间的分钟大于结束时间的分钟
// 向小时借一位
if (d2 < 0) {
// d1 借了一小时出去
d1 = d1 - 1;
// 一小时=60分钟,所以加了60
d2 = d2 + 60;
}
cout << d1 << ' ' << d2 << '\n';
return 0;
}