一、角谷猜想
【题目描述】
谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1、0。程序要求输入一个整数,将经过处理得到1的过程输出来。
【输入】
一个正整数𝑛(𝑛≤2,000,000)。
【输出】
从输入整数到11的步骤,每一步为一行,每一部中描述计算过程。最后一行输出"End
"。如果输入为11,直接输出"End
"。
【输入样例】
5
【输出样例】
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
1/2=0
End
【代码】
n = int(input("请输入一个正整数:"))
if n>0 and n<2000000:
while n!=1:
if n % 2 != 0:
n = n * 3 + 1
print("%d*3+1=%d" % (n, (n * 3 + 1)))
else:
n = n / 2
print("%d/2=%d" % (n, n / 2))
print("end")
【运行结果】
二、求小数的某一位
【题目描述】
分数化为小数后,小数点后第𝑛位的数字是多少?
【输入】
三个正整数𝑎,𝑏,𝑛,相邻两个数之间用单个空格隔开。0<𝑎<𝑏<100,1<=𝑛<=10000。
【输出】
一个数字。
【输入样例】
1 2 1
【输出样例】
5
【代码】
a,b,n = map(int , input(">>").split())
if (a>0 and a<100) and (b>0 and b<100) and (n>=1 and n<=1000):
ustr = str(a/b)
if "." not in ustr:
print("error")
else:
# 以.分割
past = ustr.split(".")
# 分割.之前的
a_past = past[0]
# 分割.之后的
b_past = past[1]
if n<=len(past):
print(b_past[n-1])
else:
print("error..")
【运行结果】
三、计算星期几
【题目描述】
假设今天是星期日,那么过天之后是星期几?
【输入】
两个正整数𝑎,𝑏,中间用单个空格隔开。0<𝑎≤100,0<𝑏≤10000。
【输出】
一个字符串,代表过天之后是星期几。
其中,Monday
是星期一,Tuesday
是星期二,Wednesday
是星期三,Thursday
是星期四,Friday
是星期五,Saturday
是星期六,Sunday
是星期日。
【输入样例】
3 2000
【输出样例】
Tuesday
【代码】
a,b = map(int, input(">>").split())
if (a>0 and a<100) and (b>0 and b>1000):
sum = a**b%7
days = [ 'Sunday','Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
/*对sum得到结果取余得到days数组对应的内容*/
print(days[sum%7])
【运行结果】
四、最大公约数
【题目描述】
求两个正整数𝑚,𝑛的最大公约数。
【输入】
输入𝑚,𝑛。
【输出】
𝑚,𝑛的最大公约数。
【输入样例】
4 6
【输出样例】
2
【提示】
【数据范围】
对于全部数据:𝑚,𝑛<4000000。
【代码】
# 更相减损术
def gcd(m, n):
while m!= n:
if m > n:
m = m - n
else:
n = n - m
return abs(m)
print(gcd(4, 6))
【运行结果】
五、菲波那契数
【题目描述】
菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数k,要求菲波那契数列中第k个数是多少。
【输入】
输入一行,包含一个正整数k。(1 ≤ k ≤ 46)
【输出】
输出一行,包含一个正整数,表示菲波那契数列中第k个数的大小。
【输入样例】
19
【输出样例】
4181
【代码】
k = int(input("输出第几位"))
for i in range(1,k+1):
# 递归函数套用
def fun(i):
if i == 1:
return 1
elif i == 2:
return 1
elif i >2 and i<47:
return fun(i-1)+fun(i-2)
else:
print("输入有误")
print(fun(k))
【运行结果】