题目链接:点击这里
注意到对于任意的 ,其被3除的余数都是1,因此 和 对3同余。
任何十进制非负整数都可以表示成 的多项式形式,其中 恰好是该十进制数的各个数位。
因此任意十进制非负整数被3除的余数,都等于将它的各个十进制位的数相加后被3除的余数。换而言之,3满足所有情况的 ,而比3小的可能的答案只有2。
所以只需要判断一下2是否是答案,如果不是输出3即可。
题解如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int T;
cin >> T;
int maxx = 0;
while (T--)
{
string str;
cin >> str;
int num = 0;
for (auto &i : str)
num += i - '0';
int check = (str.back() - '0') % 2;
bool flag = true;
while (num >= 10)
{
if (num % 2 != check)
{
flag = false;
break;
}
str = to_string(num);
num = 0;
for (auto &i : str)
num += i - '0';
}
if (flag && num % 2 == check)
cout << 2 << endl;
else
cout << 3 << endl;
}
return 0;
}
来源:CSDN
作者:菜是原罪QAQ
链接:https://blog.csdn.net/qq_42815188/article/details/103462683