坑点解析
注意题中奇数位的变换方式,应为 先乘以 7 7 7,然后每次将这个数替换为 数位和,直至他是个 一位数。
这像是什么呢?学过数论中特殊数的余数这一章的同学都知道, 9 9 9 的余数的计算方法就是这个!
光想到这就掉坑了!因为有反例: 9 9 9 -> 63 63 63 -> 9 9 9, 9 9 9 怎么可能做余数?!所以当元素 非零 且 算出来的值为 0 0 0,那是不可能的,要把他变成 9 9 9。
代码
#include <bits/stdc++.h>
using namespace std;
int main(){
int t; cin>>t;
while (t--){
string s; cin>>s;
reverse(s.begin(),s.end());
int sum=0;
for (int i=1; i<=s.size(); i++){
int num=s[i-1]-'0';
if (i%2==0) sum+=num;
else sum+=(num*7-1)%9+1;//坑点
}cout<<(sum%8==0?"T\n":"F\n");
}
}