题目描述
自幂数是指,一个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行,每行一个待判断的正整数。约定这些正整数均小于 108。
输出格式
输出 M 行,如果对应的待判断正整数为自幂数,则输出英文大写字母 T,否则输出英文大写字母 F。
提示:不需要等到所有输入结束在依次输出,可以输入一个数就判断一个数并输出,再输入下一个数。
输入输出样例
输入 #1
3 152 111 153
输出 #1
F F T
输入 #2
5 8208 548834 88593477 12345 5432
输出 #2
T T T F F
分析
输入是人都会
首先判断输入的数是几位数,代码如下
while n != 0:
n//=10
wei += 1
这段代码是先把输入的整数n对10进行取模运算,也就相当于舍去n的末尾,此时用来统计位数的变量wei自增1。当n=0时,终止循环。
接下来取得k的各个数位上的数字,并判断k是否为自幂数,代码如下
while k!=0:
g = k % 10
k //= 10
sum+=g**wei
最后是输出,代码如下
if sum==a:
print("T")
else:
print("F")
题解
m = int(input())
for i in range(m):
a = int(input())
k = a
n = a
sum = 0
wei = 0
while n != 0:
n//=10
wei += 1
while k!=0:
g = k % 10
k //= 10
sum+=g**wei
if sum==a:
print("T")
else:
print("F")
标签:10,正整数,GESP202306,输出,wei,自幂,B3841,sum,输入
From: https://blog.csdn.net/2401_84622864/article/details/145079231