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";
	}
}
posted @ 2023-10-01 00:28  iamy  阅读(1796)  评论(0)    收藏  举报