解题思路
2025-10-26 09:30:47
发布于:浙江
4阅读
0回复
0点赞
#include <iostream>
#include <string>
using namespace std;
int transform(int digit) {
int x = digit * 7;
while (x > 9) {
int sum = 0;
while (x > 0) {
sum += x % 10;
x /= 10;
}
x = sum;
}
return x;
}
bool isLucky(long long num) {
string s = to_string(num);
int n = s.length();
int total_sum = 0;
// 从右到左:位置1 是 s[n-1],位置2 是 s[n-2]...
for (int i = 0; i < n; i++) {
int pos = n - 1 - i; // 在字符串中的下标
int digit = s[pos] - '0';
if ((i + 1) % 2 == 1) { // 奇数位
digit = transform(digit);
}
total_sum += digit;
}
return total_sum % 8 == 0;
}
int main() {
int N;
cin >> N;
for (int i = 0; i < N; i++) {
long long x;
cin >> x;
if (isLucky(x)) {
cout << "T" << endl;
} else {
cout << "F" << endl;
}
}
return 0;
}
这里空空如也







有帮助,赞一个