#include using namespace std; /* 首先,我们要录进来一个数 先做个函数吧! 要bool的 int a[n]; bool xy(int n)要一个数, 进行判断 {先怎么办呢? 先数位分离: 需要什么? 需要一个n,把它分离后, 存储到一个数组里: int al=0; while(n){ int t=n%10; a[++al]=t; n/=10; } a里面是什么? a中是分离好的数,以便后来判断是奇数位还是偶数位 开始判断! 注意:如题目所示,个位为一,十位为2,所以不需把 最高为放在a[1]处 分为两种情况: 1.偶数位,不做改变 注意,先判断偶数,会更清晰 2.奇数位,需要:1.a[奇数位]*=7 2.if(a[奇数位]>9) a[i]=按位相加(此处可为函数,大致是:a[i]=a[i]%10+ a[i]/10), 那么,目前捋完了。 怎么打呢? int t=0; for(int i=al;i;i--)t=t*10+a[i]; 该看看它是否%8==0; if(t%8==0)return true; else return false; } */ int a[100]; int ys(int n) { while (n > 9) n = n % 10 + n / 10; return n; } bool xy(int n) { int al = 0; while (n) { int t = n % 10; a[++al] = t; n /= 10; } for (int i = 1; i <= al; i++) { if (i % 2) a[i] = ys(a[i] * 7); } int t = 0; for (int i = al; i; i--) t = t * 10 + a[i]; return !(t % 8); } int main() { int T; cin >> T; while (T--) { int n; cin >> n; if (xy(n)) cout << "T" << endl; else cout << "F" << endl; } return 0; }