[题目描述]
老师给小理发了一封电子邮件,任务如下。
写一个程序,给你 n 个数,输出 X。X=num1p1+num2p2+⋯+numnpn。 num1,num2,⋯⋯,numn 都是整数,p1,p2,⋯⋯ pn 都是一位数。但是出现了一些玄学错误,使得 X 变成了:X=q1+q2+...+qn。
注:qi=numi×10+pi。
例如,原来的 X 为 21^2+125^3,但现在变成了 212+1253。请帮助老师编写一个程序,输出原来 X 的值。
输入:
第一行,一个正整数 n。
接下来 n 行,每行一个整数 qi。
输出:
仅一行一个整数,X 的值。
样例输入1
2
212
1253
样例输出1
1953566
样例输入2
5
23
17
43
52
22
样例输出2
102
样例输入3
3
213
102
45
样例输出3
10385
提示:
对于 100% 的数据:1≤n≤101.0≤pi≤9.999×103,1≤X≤109。
来源/分类(难度系数:一星)
完整代码展示:
# coding=utf-8
# coding=utf-8
a=int(input())
b=[]
for i in range(a):
c=int(input())
b.append(c)
sum_1=0
d=0
while d<len(b):
e=list(str(b[d]))
f=e[-1]
e=e[0:-1]
sum_2=""
for j in range(0,len(e)):
sum_2+=e[j]
sum_1+=float(sum_2)**int(f)
d+=1
print(int(sum_1))
代码解释:
“a=int(input()) ”,让用户输入需要还原的数字的个数。
“b=[]
for i in range(a):
c=int(input())
b.append(c) ”,建立一个空列表b。让用户输入需要还原的数字,并将其添加进列表b中-循环a次。
“sum_1=0
d=0
while d<len(b):
e=list(str(b[d]))
f=e[-1]
e=e[0:-1]
sum_2=""
for j in range(0,len(e)):
sum_2+=e[j]
sum_1+=float(sum_2)**int(f)
d+=1 ”,令sum_1=0,循环密码子为d,初始值设为0。当d<len(b)时,将b[d]转换为字符串并储存在列表e中。令f等于列表e的第一个元素,e重新赋值为原e的第二至最后一个元素。建立一个空字赋串sum_2,让sum_2将新e中的元素从左至右依次连接起来,令sum_1+=float(sum_2)**int(f)。每循环一次,就让d+1,直至d==len(b),跳出整个while循环。
“print(int(sum_1)) ”,打印sum_1的最终值。
运行效果展示:
(声明:以上内容均为原创)