PTA第二章算法题汇总

嗨,同学,要成为粉丝才可见奥,关注我把哈哈哈哈或,奥利给 ~

 

7-2 计算分段函数[1] (10分)

本题目要求计算下列分段函数f(x)的值:

公式

x=float(input())
if abs(x) < 10e-10:
   y=0
else:
   y=1/x
print("f({0:.1f}) = {1:.1f}".format(x,y))

7-3 阶梯电价 (15分)

为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。

Eq=input()
x=float(Eq)
if (x<=50):
    if x<0:
        print ("Invalid Value!")
    else:
        y=x*0.53
        print("cost = %.2f"%y)
else:
    y=26.5 + (x - 50)*0.58
    print("cost = %.2f"%y)

 7-4 求奇数分之一序列前N项和 (15分)

本题要求编写程序,计算序列 1 + 1/3 + 1/5 + ... 的前N项之和。

N=int(input())
S=0
for i in range(1,N+1):
    S=S+1/(2*i - 1)
print("sum = {:.6f}".format(S))

7-5 求交错序列前N项和 (15分)

本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。

N = int(input())
S = 0
temp = -1
for i in range(1, N+1):
    t = i/(2*i -1)
    temp = temp * (-1)
    S=S+temp*t
print("{:.3f}".format(S))

7-6 产生每位数字相同的n位数 (30分)

读入2个正整数A和B,1<=A<=9, 1<=B<=10,产生数字AA...A,一共B个A

a,b=map(int,input().split(","))
print(str(a)*int(b))

7-7 转换函数使用 (30分)

输入一个整数和进制,转换成十进制输出

a, b = map(int, input().split(","))
c = str(a)
d = len(c)
ans = 0
for i in range(1, d+1):
    ans = ans + (a % 10)*(b**(i - 1))
    a = a // 10
print(ans)

7-8 比较大小 (10分)

本题要求将输入的任意3个整数从小到大输出。

a,b,c=input().split()
a,b,c=int(a),int(b),int(c)
# max = a, mid = b, min = c
if a > b:
    temp = a
    a = b
    b = temp 
if b > c:
    temp = b
    b = c
    c = temp
if a > b:
    temp = a
    a = b
    b = temp
x=str(a)
y=str(b)
z=str(c)
print(x + "->" + y + "->" + z)

7-9 输出华氏-摄氏温度转换表 (15分)

输入2个正整数lowerupperlowerupper≤100),请输出一张取值范围为[lowerupper]、且每次增加2华氏度的华氏-摄氏温度转换表。

温度转换的计算公式:C=5×(F−32)/9,其中:C表示摄氏温度,F表示华氏温度。

lower,upper = map(int, input().split())
if 0 < lower <= upper <= 100:
    print("fahr celsius")
    for i in range(lower,upper+1,2):
          print("{:d}{:>6.1f}".format(i,5*(i-32)/9))
else:
    print("Invalid.") 

7-10 求平方与倒数序列的部分和 (15分)

本题要求对两个正整数m和n(m≤n)编写程序,计算序列和m​2​​+1/m+(m+1)​2​​+1/(m+1)+⋯+n​2​​+1/n。

m,n=input().split()
m,n=int(m),int(n)
s=0
for i in range(m,n+1):
    s=s+i*i+1/i
sum=s
print("sum = {:.6f}".format(sum))

7-11 偶数位特殊序列和 (40分)

给定不超过9的正整数a,给定正整数n,n是偶数,4<=n<=18,要求编写程序求aa+aaaa+aaaaaa+⋯+aa⋯a(n个a)之和。

a, n =  map(int, input().split())
ans = 0
for i in range(2, n + 1, 2):
    temp = int(str(a) * i)
    ans = ans + temp
print(ans)

7-12 输出三角形面积和周长 (15分)

本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√​s(s−a)(s−b)(s−c)​​​,其中s=(a+b+c)/2。

a,b,c=map(int,input().split())
if a+b>c and a+c>b and b+c>a:
    s=(a + b + c)/2
    C=s*2
    ar=(s*(s-a)*(s-b)*(s-c))**0.5
    print("area = {:.2f}; perimeter = {:.2f}".format(ar,C))
else:
    print("These sides do not correspond to a valid triangle")

7-13 分段计算居民水费 (10分)

为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x−17.5。请编写程序实现水费的计算。

x = int(input())
if x <= 15:
    y = 4*x/3
else:
    y = 2.5*x - 17.5
print("{:.2f}".format(y))

7-14 求整数段和 (15分)

给定两个整数A和B,输出从A到B的所有整数以及这些数的和。

A,B = input().split()
A = int(A)
B = int(B)
count = 0
Sum = 0
for i in range(A,B+1):
    count += 1
    Sum += i
    print('%5d'%i,end='')
    if count % 5 == 0:
        print()

if count % 5 != 0:
    print()
    print('Sum = %d'%Sum)
else:
    print('Sum = %d' % Sum)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值