题目描述
老师给小理发了一封电子邮件,任务如下。
写一个程序,给你 n 个数,输出 X。
X=num1^p1+num2^p2+⋯+numn^pn
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≤10,1.0≤pi≤9.999×103,1≤X≤109。
来源/分类(难度系数:一星)
数学思维
完整代码展示:
# 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()) ”,让用户输入需要改错的题数a。
“b=[]
for i in range(a):
c=int(input())
b.append(c) ”,建立一个空列表b,接着循环a次:让用户输入题目数值,再将数值添加进b中。
“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为原X的值,d为循环密码子,当d<len(b)时:将b[d]转换为字符串储存在e中,令f=e[-1],sum_2依次连接e[0:-1]中的元素,再将f,sum_2转换为可计算数值,sum_1+=sum_2**f,每循环一次,d+1,直至d==len(b),跳出整个while循环。
“print(int(sum_1)) ”,打印sum_1的最终结果。
运行效果展示:
(声明:以上内容均为原创)