[题目描述]:
自幂数是指,一个N 位数,满足各位数字N 次方之和是本身。例如,153153 是 33 位数,其每位数的 33 次方之和,13+53+33=15313+53+33=153,因此 153153 是自幂数;16341634 是 44 位数,其每位数的 44 次方之和,14+64+34+44=163414+64+34+44=1634,因此 16341634 是自幂数。现在,输入若干个正整数,请判断它们是否是自幂数。
输入:
输入第一行是一个正整数M,表示有M 个待判断的正整数。约定 1≤M≤100。
从第 22 行开始的M 行,每行一个待判断的正整数。约定这些正整数均小于 108108。
输出:
输出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
来源/分类(难度系数:一星)
完整代码如下:
a=int(input())
b=[]
for i in range(a):
c=int(input())
b.append(c)
for j in range(0,len(b)):
d=b[j]%10
e=b[j]//10%10
f=b[j]//100%10
h=b[j]//1000%10
k=b[j]//10000%10
l=b[j]//100000%10
m=b[j]//1000000%10
n=b[j]//10000000%10
s=len(str(b[j]))
if d**s+e**s+f**s+h**s+k**s+l**s+m**s+n**s==b[j]:
print("T")
else:
print("F")
代码解释:
“a=int(input())
b=[] ”,让用户输入需要判断是否为自幂数的数字的个数,并将其赋给a。建立一个空列表b。
“for i in range(a):
c=int(input())
b.append(c) ”,循环a次让用户输入具体需要判断的数,并依次将其存入列表b中。
“for j in range(0,len(b)):
d=b[j]%10
e=b[j]//10%10
f=b[j]//100%10
h=b[j]//1000%10
k=b[j]//10000%10
l=b[j]//100000%10
m=b[j]//1000000%10
n=b[j]//10000000%10
s=len(str(b[j])) ”,遍历列表b中的数字,依次求出其个,十,百,千,万,十万,百万,千万位的数字d,e,f,h,k,l,m,n。然后求出该数字的位数s。
“if d**s+e**s+f**s+h**s+k**s+l**s+m**s+n**s==b[j]:
print("T")
else:
print("F") ”,根据自幂数的定义判断每次遍历的数字是否为自幂数。如果是,则输出“Yes”;如果不是,输出“No”。
运行效果展示:
(声明:以上内容均为原创)