真诚推荐IDE : “啊哈C++ 3.0” 真的超级好用 评测记录 : https://www.luogu.com.cn/record/233665185
#include <iostream>
#include <cstring>
using namespace std;
int get_digit_sum(int p)
{
int s = 0;
while(p != 0)
{
s += p % 10;
p /= 10;
}
return s;
} //返回各位数字和
int change(int x) //对一个数字进行变化
{
x *= 7; //将数字乘以7
if (x <= 9)
{
return x; //若不大于9,则作为变换结果
}
else {
int xx = get_digit_sum(x); //否则把结果的各位数相加
if (xx <= 9)//若结果不大于9
{
return xx; //则作为变换结果
}
else{
while(1) //否则继续把各位数相加 直到结果不大于9
{
xx = get_digit_sum(xx);
if (xx <= 9)
{
return xx;
}
}
}
}
}
int main()
{
int n;
cin >> n;
for (int temp = 0;temp < n;temp++)
{
char num1[20];
int num[20];
cin >> num1;
int len = strlen(num1);
for (int i=0;i<len;i++)
{
num[i] = num1[i] - '0'; //转成整数数组
}
for (int i=0;i<len;i++)
{
if (i % 2 == 0) //对于 0-based来说 奇数位相当于 1-based 的偶数位
{
num[i] = change(num[i]); //对奇数位的数字进行变换
}
}
int s = 0 ;
for (int i=0;i<len;i++)
{
s += num[i]; //将变换结束后的数字的个数为相加
}
if (s % 8 == 0) //如果得到的和是 8 的 倍数
{
cout << "T" << endl; //Yes
}
else cout << "F" << endl; //No
}
return 0;
}
谢大佬