#3905. [GESP2306 二级] 自幂数判断

[GESP2306 二级] 自幂数判断

自幂数判断

题目描述

自幂数是指,一个 位数,满足各位数字 次方之和是本身。例如,153是3 位数,其每位数的 3 次方之和, ,因此 153 是自幂数;1634

3 3 3 是4位数,其每位数的 4次方之和, ,因此 1634是自 1 +5 +3 = 153 4 4 4 4 幂数。 1 +6 +3 +4 = 1634 现在,输入若干个正整数,请判断它们是否是自幂数。

输入格式

输入第一行是一个正整数 ,表示有 个待判断的正整数。约定 。 从第2行开始的 行,每行 一个待判 断的正整数。约定这些正整1数≤均 小≤于100。 8 【输出描述】 10 输出 行,如果对应的待判断正整数为自幂数,则输出英文大写字母'T', 否则输出

英文大写字母'F'。 提示:不需要等到所有输入结束在依次输出,可以输入一个数就判断一个数 并输出,再输入下一个数。 【样例输入1】 3 152 111 153 【样例输出1】 F F T 【样例输入2】 5 8208 548834 88593477 12345 5432 【样例输出2】 T T T F F 【参考程序】 #include using namespace std; int main() { int m = 0; cin >> m; for (int i = 0; i < m; i++) { int n = 0; cin >> n; // 数一下n有多少位数,记为l int t = n, l = 0; while (t > 0) { t /= 10; l++; } // 每位数l次方求和,记为sum int sum = 0; t = n; while (t > 0) { int d = t % 10; t /= 10; int mul = 1; for (int j = 0; j < l; j++) mul *= d; sum += mul; } // 根据sum和n是否相等,判断是否为自幂数 if (sum == n) cout << "T" << endl; else cout << "F" << endl; } return 0; }

输出格式

样例输入 #1

3
152
111

样例输出 #1

F
F
T

样例输入 #2

5
8208
548834
88593477
12345

样例输出 #2

T
T
T
F
F

数据范围

见题目描述

知识点与难度

本题涉及的知识点从属于 GESP 2级,难度等级:⭐ 。


测试点分布

Subtask 分值 测试点编号 说明
0 10 1~2 样例
1 20 3~8 小规模 / 特殊性质
2 15 9~11 Hack
3 30 12~20 中大规模
4 25 21~25 随机回归

生测试数据后,按实际 subtask 分组改写上表。