样例已过,20分求调
查看原帖
样例已过,20分求调
815972
Hanatomizu楼主2024/7/17 10:25

样例已过,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;
}
2024/7/17 10:25
加载中...