测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A37668. 自幂数判断问题描述自幂数是指,一个�位数,满足各位数字�次方之和是本身。例如,153 是 3位数,其每位数的 3 次方之和,13 + 53 + 33 = 153,因此 153 是自幂数;1634是 4 位数,其每位数的 4 次方之和,14 + 64 + 34 + 44 = 1634,因此 1634 是自幂数。现在,输入若干个正整数,请判断它们是否是自幂数。输入描述输入第一行是一个正整数�,表示有…

填空题 困难

题目描述

自幂数判断

问题描述

自幂数是指,一个�位数,满足各位数字�次方之和是本身。例如,153 是 3

位数,其每位数的 3 次方之和,13 + 53 + 33  = 153,因此 153 是自幂数;1634是 4 位数,其每位数的 4 次方之和,14 + 64 + 34 + 44  = 1634,因此 1634 是自幂数。现在,输入若干个正整数,请判断它们是否是自幂数。

输入描述

输入第一行是一个正整数�,表示有�个待判断的正整数。约定 1 ≤ �  ≤ 100。 从第 2 行开始的�行,每行一个待判断的正整数。约定这些正整数均小于108。

输出描述

输出�行,如果对应的待判断正整数为自幂数,则输出英文大写字母'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 <iostream> 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; }
上一题 下一题