社区讨论
为什么只过了一个点,求教,定回关
B3850[GESP202306 四级] 幸运数参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @m4feaqtl
- 此快照首次捕获于
- 2024/12/08 17:22 去年
- 此快照最后确认于
- 2025/11/04 13:07 4 个月前
样例和自己随便试的几个数,都没问题
CPP#include <iostream>
using namespace std;
int weic(int x) {
if (x <= 9)
return x;
else
return weic(x % 10 + (x - x % 10) / 10);
}
int swei(int x) {
int wei = 0;
for (; x > 0;) {
x = (x - x % 10) / 10;
wei++;
}
return wei;
}
int ten(int x, int i) {
if (i == 0)
return x;
else
return ten(x * 10, i - 1);
}
long long change(long long x) {
int a[12], b = swei(x), num = 0;
for (int i = 0; i <= b - 1; i++) {
a[i] = x % 10;
x = (x - x % 10) / 10;
}
for (int i = 0; i <= b - 1; i += 2)
a[i] = weic(a[i] * 7);
for (int i = 0; i <= b - 1; i++)
num += ten(a[i], i);
return num;
}
int sum(long long x) {
int a = swei(x), b = 0;
for (int i = 1; i <= a; i++) {
b += x % 10;
x = (x - x % 10) / 10;
}
return b;
}
int main() {
long long x;
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> x;
if (sum(change(x)) % 8 == 0)
cout << "T" << endl;
else
cout << "F" << endl;
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...