U305408 GSEP 2级真题 [202306] 自幂数判断
GSEP 2级真题 [202306] 自幂数判断
题目描述
自幂数是指,一个N位数,满足各位数字N次方之和是本身。例如,153是3位数,其每位数的3次方之和,\(1^3 + 5^3 + 3^3= 153\),因此153是自幂数;1634是4位数,其每位数的4次方之和,\(1^4 + 6^4 + 3^4 + 4^4=1634\),因此1634是自幂数。
现在,输入若干个正整数,请判断它们是否是自幂数。
输入格式
输入第一行是一个正整数M,表示有M个待判断的正整数。约定1 < M < 100.
从第2行开始的M行,每行一个待判断的正整数。约定这些正整数均小于\(10^8\)。
输出格式
输出M行,如果对应的待判断正整数为自幂数,则输出英文大写字母T,否则输出英文大写字母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
提示
提示:不需要等到所有输入结束在依次输出,可以输入一个数就判断一个数并输出,再输入下一个数。
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int c; cin >> c;
for (int i = 0; i < c; i++) {
uint64_t n; cin >> n;
uint64_t t = n;
int p = 0;
while (t) { // 计算指数
t /= 10;
++p;
}
t = n;
uint64_t sm = 0;
while (t) {
sm += pow(t % 10, p);
t /= 10;
}
if (sm == n) cout << "T\n";
else cout << "F\n";
}
}

浙公网安备 33010602011771号