样例已过,20分求调 - Wrong Answer
#include <iostream>
#include <vector>
#define int long long
// 快读
inline int read(){
int x = 0, f = 1;
char c = getchar();
while(c < '0' || c > '9'){
if (c == '-') f = -1;
c = getchar();
}
while(c >= '0' && c <= '9'){
x = x*10 + c-'0'; c = getchar();
}
return x * f;
}
// 用递归的思路,n <= 9时返回n,
int backtrack(int n){
if (n <= 9) return n;
// printf("backtracking, n = %lld \n", n);
return backtrack((n%10) + (n/10));
}
signed main(){
int n = read();
while (n--){
std::vector<int> l;
int result = 0;
// 读取正整数并存入vector,经过测试读取没有问题
char c = getchar();
while (c >= '0' && c <= '9'){
l.push_back(c - '0');
c = getchar();
}
// 模拟
for (int i = l.size()-1; i >= 0; i-=2){
// printf("result %lld, l=%lld\n", i, l[i]);
// 把奇数位加入result
result += backtrack(l[i] * 7);
// 如果i为初始值会导致数组越界,所以continue
if (i == (long long)l.size()-1) continue;
// printf("l[i+1] = %lld", l[i+1]);
// 直接加偶数位数字
result += l[i+1];
}
// 输出结果
printf("%c\n", result % 8 == 0 ? (char)'T' : (char)'F');
}
return 0;
}