Happy#32-T6 超人基因 题解
2024-10-21 07:16:17
发布于:广东
这次的排位赛仍然比较简单,所以本人准备发一篇题解,也是蒟蒻为数不多地写题解,有更优解欢迎吐槽~🎃
🎉题目分析🎉
题目一共给出了 组测试样例,每个测试样例输入一个整数 ,我们可以发现, 的位数不超过 ,因此我们可以利用 的数位进行暴力枚举,步骤如下:
- 令字符串 为 的字符串形式,并设 为 的长度 ->
- 枚举左端点和右端点,表示删除部分的两个端点 ->
- 构造删除部分基因后的新基因序列 ->
- 将新基因序列的string类型转换为整数类型
- 判断结果是否整取4,如果条件成立,则标记并跳出循环
AC Code🎈
#include <bits/stdc++.h>
#define ll long long // 用 ll 代替 long long(纯省事)
// #define A B 表示在代码的后续部分中,将所有出现的 A 替换为 B
using namespace std;
int main() {
int _; cin >> _; // 样例组数
while (_ --) {
ll ss; // 读取输入
cin >> ss;
string s = to_string(ss);
// to_string函数 -> 转换成字符串
int n = s.length();
bool h = (ss % 4 == 0); // 判断输入无需修改时取余4等于0(20分的细节)
for (int i = 0; i < n; i ++)
for (int j = i; j < n; j ++) {
// 枚举删除部分基因的左端点 i 和右端点 j
string p; // 删除后的字符串
for (int z = 0; z < n; z ++)
if (!(i <= z && j >= z))
p += s[z];
int m = p.size();
ll sum = (p[m - 1] - '0') + 10 * (p[m - 2] - '0');
// 取字符串的后两位,并转换成整数
if (sum % 4 == 0 && p != "") {
// 不能删除全部
h = 1;
break;
}
}
cout << (h ? "Superman" : "Human") << '\n'; // 三目表达式
}
return 0;
}
点个赞不过分吧👍~~+关注~~
此贴原著:🐱🚀,ID:4348708
禁止抄袭本帖,违者必究✌
全部评论 3
顶
2024-10-21 来自 广东
3顶
2024-10-21 来自 广东
3帮顶
2024-10-21 来自 广东
2
有帮助,赞一个