斐波那契数列的两种求法:
斐波拉契数列:这个数列从第三项开始,每一项都等于前两项之和。(10分)
题目内容:
已知斐波拉契数列的前两项都是1,我们定义求斐波拉契数列的第n项(n<=50)的函数为fbnq,程序主体如下:
n=int(input(""))
print(fbnq(n))
请补充完成对fbnq函数的定义。
输入格式:
共一行,为一个正整数。
输出格式:
共一行,为一个正整数。
输入样例:
7
输出样例:
13
时间限制:500ms内存限制:32000kb
def fbnq(n):
L=[1,1]
while len(L)<n:
L.append(L[-1]+L[-2])
return L[-1]
n=int(input(""))
print(fbnq(n))
这样可以AC,但是还有一种递归做法。
def fbnq(n):
if(n==1):
return 1
elif(n==2):
return 1
else:
return fbnq(n-1)+fbnq(n-2)
这样会超时
求两个数的最大公约数。(10分)
题目内容:
输入两个正整数num1和num2(不超过1000),求它们的最大公约数并输出。
我们定义求最大公约数的函数为hcf,给出程序主体如下:
num1=int(input(""))
num2=int(input(""))
print(hcf(num1,num2))
请补充完成hcf函数的定义。
输入格式:
共两行,每一行输入一个不超过1000的正整数。
输出格式:
共一行,输出一个正整数。
输入样例:
6
8
输出样例:
2
时间限制:500ms内存限制:32000kb
def hcf(x, y):
"""该函数返回两个数的最大公约数"""
# 获取最小值
if x > y:
smaller = y
else:
smaller = x
for i in range(1,smaller + 1):
if((x % i == 0) and (y % i == 0)):
hcf = i
return hcf
# 用户输入两个数字
num1 = int(input(""))
num2 = int(input(""))
print( hcf(num1, num2))
题目内容:
输入两个正整数num1和num2(不超过500),求它们的最小公倍数并输出。
我们定义求最小公倍数的函数为lcm,给出程序主体如下:
num1=int(input(""))
num2=int(input(""))
print(lcm(num1,num2))
请补充完成hcf函数的定义。
输入格式:
共两行,每一行输入一个不超过500的正整数。
输出格式:
共一行,输出一个正整数。
输入样例:
4
6
输出样例:
12
时间限制:500ms内存限制:32000kb
def lcm(x, y):
# 获取最大的数
if x > y:
greater = x
else:
greater = y
while(True):
if((greater % x == 0) and (greater % y == 0)):
lcm = greater
break
greater += 1
return lcm
# 获取用户输入
num1 = int(input())
num2 = int(input())
print( lcm(num1, num2))
题目内容:
我们定义求n(n为正整数且n<=20)的阶乘的函数为fact,给出程序主体如下:
n=int(input(""))
print(fact(n))
请补充完成对fact函数的定义。
输入格式:
共一行,为一个小于20的正整数。
输出格式:
共一行,为一个正整数。
输入样例:
3
输出样例:
6
时间限制:500ms内存限制:32000kb
def fact(n):
value = 1
for i in range(1,n+1):
value*=i
return value
n=int(input(""))
print(fact(n))
题目内容:
冒泡排序是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
已知输入为一个列表,列表中的元素都为整数,我们定义冒泡排序函数为bubbleSort,将列表中的元素按从小到大进行排序后得到一个新的列表并输出,给出程序主体如下:
alist=list(map(int,input().split()))
print(bubbleSort(alist))
请补充完成对bubbleSort函数的定义。
输入格式:
共一行,列表中的元素值,以空格隔开。
输出格式:
共一行,为一个列表。
输入样例:
1 4 2 3
输出样例:
[1, 2, 3, 4]
时间限制:500ms内存限制:32000kb
# bubble_sort.py
def bubble_sort(alist):
# 外层循环
for j in range(len(alist) - 1):
count = 0
# 内层循环
for i in range(0, len(alist)-1-j):
if alist[i] > alist[i + 1]:
alist[i], alist[i + 1] = alist[i + 1], alist[i]
count += 1
if 0 == count:
break
if __name__ == '__main__':
alist=list(map(int,input().split()))
#print(li)
bubble_sort(alist)
print(alist)