自幂数判断 - 算法题解
自幂数判断 - 算法题解
问题描述
自幂数是指一个 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’。
示例
输入样例
3
153
1634
1234
输出样例
T
T
F
样例说明
输入样例中,共有3个待判断的正整数,分别是153、1634和1234。 其中,153是自幂数,输出T; 1634也是自幂数,输出T; 而1234不是自幂数,输出F。
算法思路
- 获取输入的正整数 N。
- 计算 N 的位数,记为 digit_num。
- 遍历 N 的每一位数字,计算其 digit_num 次方,并将结果累加到 sum 中。
- 如果 sum 等于 N,则 N 是自幂数,输出 ‘T’;否则,输出 ‘F’。
代码示例
# 获取输入的正整数 M
M = int(input())
# 循环遍历 M 个待判断的正整数
for i in range(M):
# 获取待判断的正整数 N
N = int(input())
# 计算 N 的位数
digit_num = len(str(N))
# 初始化 sum 为 0
sum = 0
# 遍历 N 的每一位数字
for j in str(N):
# 计算当前位数字的 digit_num 次方
sum += int(j) ** digit_num
# 判断 N 是否是自幂数
if sum == N:
print('T')
else:
print('F')
总结
通过以上算法思路和代码示例,我们可以轻松判断一个正整数是否为自幂数。这道算法题并不复杂,但可以帮助我们理解如何进行数字的位数计算和遍历,以及如何根据条件进行判断。
原文地址: https://www.cveoy.top/t/topic/qoLG 著作权归作者所有。请勿转载和采集!