[题目描述]:
 自幂数是指,一个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”。
运行效果展示:

 
 
(声明:以上内容均为原创)