[题目描述]:
自幂数是指,一个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

来源/分类(难度系数:一星)

 

完整代码如下:
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”。

运行效果展示:

f0e2cf85eea24381a67c403ed847d7be.jpg

c4e6124c79ae4ef58af3f892b8554fd8.jpg 

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

 

 

 

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部