[GESP202306 二级] 自幂数判断
题目描述
自幂数是指,一个 N N N 位数,满足各位数字 N N N 次方之和是本身。例如, 153 153 153 是 3 3 3 位数,其每位数的 3 3 3 次方之和, 1 3 + 5 3 + 3 3 = 153 1^3+5^3+3^3=153 13+53+33=153,因此 153 153 153 是自幂数; 1634 1634 1634 是 4 4 4 位数,其每位数的 4 4 4 次方之和, 1 4 + 6 4 + 3 4 + 4 4 = 1634 1^4+6^4+3^4+4^4=1634 14+64+34+44=1634,因此 1634 1634 1634 是自幂数。现在,输入若干个正整数,请判断它们是否是自幂数。
输入格式
输入第一行是一个正整数 M M M,表示有 M M M 个待判断的正整数。约定 1 ≤ M ≤ 100 1 \le M \le 100 1≤M≤100。
从第 2 2 2 行开始的 M M M 行,每行一个待判断的正整数。约定这些正整数均小于 1 0 8 10^8 108。
输出格式
输出 M M M 行,如果对应的待判断正整数为自幂数,则输出英文大写字母 T \texttt T T,否则输出英文大写字母 F \texttt F F。
提示:不需要等到所有输入结束在依次输出,可以输入一个数就判断一个数并输出,再输入下一个数。
样例 #1
样例输入 #1
3
152
111
153
样例输出 #1
F
F
T
样例 #2
样例输入 #2
5
8208
548834
88593477
12345
5432
样例输出 #2
T
T
T
F
F
AC_Code
#include <bits/stdc++.h>
using namespace std;
int get(int x)
{
int ans = 0;
while(x)
{
ans ++;
x /= 10;
}
return ans;
}
int main()
{
int t;
cin >> t;
while(t --)
{
int x;
cin >> x;
int k = get(x);
int tmp = x;
int ans = 0;
while(tmp)
{
ans += pow((tmp % 10), k);
tmp /= 10;
}
if(ans == x) cout << "T\n";
else cout << "F\n";
}
return 0;
}