B3850 题解

· · 题解

思路分析

实在没有什么好讲的,读入后直接模拟修改每一个数位即可。

可以通过代码理解。

代码实现

#include <iostream>
#include <cstdio>

int sum(long long k) { // 求一个数的各位之和
    int ans = 0;
    for (; k; k /= 10) ans += k % 10;
    return ans;
}

int trans(long long k) { // 变换一个数位
    k *= 7;
    while (k > 9) k = sum(k);
    return k;
}

bool judge(long long n) {
    int ans = 0;
    for (int p = 1; n; n /= 10, ++p) {
        if (p & 1) ans += trans(n % 10);
        else ans += n % 10;
    }
    return !(ans % 8);
}

int main() {
    int T;
    long long n;
    for (std::cin >> T; T; --T) {
        std::cin >> n;
        std::cout << (judge(n) ? 'T' : 'F') << std::endl;
    }
    return 0;
}