202603-1 交朋友
题目描述
Alice 班上共有 4 个小朋友,身高分别为 ,其中 Alice 的身高为 。
Alice 想要和身高最接近她的人交朋友,如果有多个人符合条件,则 Alice 想和其中较矮的那一人做朋友,你能告诉她这个人的身高是多少吗?
输入格式
输入共 4 行,第 行包含一个整数 ,表示班上小朋友的身高。
输出格式
输出 1 行,包含一个整数 ,表示 Alice 想交的朋友的身高。
输入样例
150165135133输出样例
135样例解释
样例 1 中,Alice 身高为 150,第 2、3 个小朋友与 Alice 身高差距为 15,同样最接近,Alice 选较矮的一个即第 3 个身高为 135 的小朋友交朋友。
数据范围
保证 且 互不相同。
代码解析
这道题是一道“打擂台”求最小值的题,不过加了一些难度,是需要让每个数字减掉一个数字的差值去打擂台,而且这个差值有可能小于0,如 165-150=15,135-150=(-15),所以我们需要用差值的绝对值去打擂台,若绝对值相等就拿数字本身去打擂台,如 135 和 165 我们选小的 135
#include <bits/stdc++.h>using namespace std;int main() {
int h1, ans = 1000; cin >> h1; for (int i = 1; i <= 3; i++) { int hi; cin >> hi; int d1 = abs(hi-h1), d2 = abs(ans-h1); if (d1 < d2) ans = hi; else if (d1 == d2 && hi < ans) ans = hi; } cout << ans;
return 0;}如果还没有学过数学函数 abs() 的话,可以定义变量保存差值,判断是否 < 0,如:
int d1 = hi-h1;if (d1 < 0) d1 = -d1;int d2 = hi-h1;if (d2 < 0) d2 = -d2;
202603-2 数字替换
题目描述
Alice 不喜欢数字 4,但觉得数字 8 寓意好,她想把数中的 4 全都替换成 8,若数中不含 4 则无需修改,你能帮帮她吗?
输入格式
输入一行,包含一个整数 ,表示替换前的数。
输出格式
输出一行,包含一个整数 ,表示替换后的数。
输入样例 1
8459045输出样例 1
8859085输入样例 2
123输出样例 2
123数据范围
保证 。
代码解析
如果已经学了字符串,那只需要输入字符串遍历即可,但是一级的考纲不包含字符串,所以最简单的方法就是:
使用字符,依次输入,如果是字符 4 就输出 8,唯一的难点是题目没有给出数字的位数,所以我们可以直接把 cin 作为循环条件(这个技巧是第一次出现,平时几乎很少见,在考场上可能想不到)。
#include <bits/stdc++.h>using namespace std;int main() {
char n; while (cin >> n) { if (n == '4') cout << 8; else cout << n; }
return 0;}第二种解法就是使用数位分离(剥离)的技巧,将每个数字单独提取出来,判断是否为 4,若为 4 则变成 8,再利用进制相关知识,重新组合成新的数字,输出即可。
#include <iostream>using namespace std;int main() {
int A; cin >> A; int B = 0, weight = 1; // 位权:1, 10, 100, ... while (A > 0) { int t = A % 10; if (t == 4) t = 8; A /= 10; // 将处理后的数字乘以其位权,加到结果中 B += t * weight; weight *= 10; // 更新位权 } cout << B << endl;
return 0;}
陕公网安备61010302001363号