自幂数判断 - 算法题解

问题描述

自幂数是指一个 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。

算法思路

  1. 获取输入的正整数 N。
  2. 计算 N 的位数,记为 digit_num。
  3. 遍历 N 的每一位数字,计算其 digit_num 次方,并将结果累加到 sum 中。
  4. 如果 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录