7-1 生成3的乘方表 (15分)
输入一个非负整数n,生成一张3的乘方表,输出3
0
~3
n
的值。可调用幂函数计算3的乘方。
输入格式:
输入在一行中给出一个非负整数n。
输出格式:
按照幂的递增顺序输出n+1行,每行格式为“pow(3,i) = 3的i次幂的值”。题目保证输出数据不超过长整型整数的范围。
输入样例:
3
输出样例:
pow(3,0) = 1
pow(3,1) = 3
pow(3,2) = 9
pow(3,3) = 27
代码
n=int(input())
for i in range(n+1):
print("pow(3,%d) = %d"%(i,pow(3,i)))
7-2 统计素数并求和 (20分)
本题要求统计给定整数M和N区间内素数的个数并对它们求和。
输入格式:
输入在一行中给出两个正整数M和N(1≤M≤N≤500)。
输出格式:
在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。
输入样例:
10 31
输出样例:
7 143
代码
m,n=input().split(" ")
count=0
flag=1
num=0
for i in range(int(m),int(n)+1):
for j in range(2,i):
if i % j == 0:
break
else:
flag+=1
if flag == i-1:
count+=i
num+=1
flag=1
print("%d %d"%(num,count))
7-3 猴子吃桃问题 (15分)
一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?
输入格式:
输入在一行中给出正整数N(1<N≤10)。
输出格式:
在一行中输出第一天共摘了多少个桃子。
输入样例:
3
输出样例:
10
代码
n=int(input())
count=1
for i in range(n-1):
count=(count+1)*2
print(count)
7-4 验证“哥德巴赫猜想” (20分)
数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。
输入格式:
输入在一行中给出一个(2, 2 000 000 000]范围内的偶数N。
输出格式:
在一行中按照格式“N = p + q”输出N的素数分解,其中p ≤ q均为素数。又因为这样的分解不唯一(例如24还可以分解为7+17),要求必须输出所有解中p最小的解。
输入样例:
24
输出样例:
24 = 5 + 19
代码
def a(i):
flag=1
if i==1:
return 0
for j in range(2,int(i**0.5)+1):
if i%j==0:
flag=0
break
return flag
n=int(input())
for i in range(1,n//2+1):
if a(i) and a(n-i):
print("%d = %d + %d"%(n,i,n-i))
break
7-5 求e的近似值 (15分)
自然常数 e 可以用级数 1+1/1!+1/2!+⋯+1/n!+⋯ 来近似计算。本题要求对给定的非负整数 n,求该级数的前 n+1 项和。
输入格式:
输入第一行中给出非负整数 n(≤1000)。
输出格式:
在一行中输出部分和的值,保留小数点后八位。
输入样例:
10
输出样例:
2.71828180
代码
def a(n):
num=1
for i in range(1,n+1):
num*=i
return num
n=int(input())
sum=0
for i in range(1,n+1):
sum+= 1/a(i)
print("%.8f"%(sum+1))
7-6 输出前 n 个Fibonacci数 (15分)
本题要求编写程序,输出菲波那契(Fibonacci)数列的前N项,每行输出5个,题目保证输出结果在长整型范围内。Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列,例如:1,1,2,3,5,8,13,…。
输入格式:
输入在一行中给出一个整数N(1≤N≤46)。
输出格式:
输出前N个Fibonacci数,每个数占11位,每行输出5个。如果最后一行输出的个数不到5个,也需要换行。
如果N小于1,则输出"Invalid."
输入样例1:
7
输出样例1:
1 1 2 3 5
8 13
输入样例2:
0
输出样例2:
Invalid.
n=int(input())
count=0
data=[1,1]
for i in range(2,n+1):
data.append(data[i-1]+data[i-2])
if n >= 1 :
for i in range(0,n):
num=data[i]
count+=1
if count % 5 != 0 and i != n-1:
print("%11d"%num,end="")
else:
print("%11d"%num)
else:
print("Invalid.")
7-7 统计学生平均成绩与及格人数 (15分)
本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。题目保证输入与输出均在整型范围内。
输入格式:
输入在第一行中给出非负整数N,即学生人数。第二行给出N个非负整数,即这N位学生的成绩,其间以空格分隔。
输出格式:
按照以下格式输出:
average = 成绩均值
count = 及格人数
其中平均值精确到小数点后一位。
输入样例:
5
77 54 92 73 60
输出样例:
average = 71.2
count = 4
代码
n=int(input())
count=0
if n == 0:
print("average = 0.0")
print("count = 0")
else:
data=input().split(" ")
data=list(map(int,data))
for i in range(n):
if int(data[i])>=60:
count+=1
print("average = %.1f"%(sum(data)/n))
print("count = %d"%count)
7-8 求分数序列前N项和 (15分)
本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+… 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。
输入样例:
20
输出样例:
32.66
代码
n=int(input())
data=[1,2]
sum=0
for i in range(2,n+1):
data.append(data[i-1]+data[i-2])
for i in range(n):
sum+=data[i+1]/data[i]
print("%.2f"%sum)
7-9 查询水果价格 (15分)
给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。
首先在屏幕上显示以下菜单:
[1] apple
[2] pear