http://tieba.baidu.com/p/3407986942
解答如下:
第一题:
#!/usr/bin/env python # -*- coding:utf-8 -*- # 日本数学家谷角静夫在研究自然数时发现了一个奇怪现象:对于任意一个自然数 n, # 若 n 为偶数,则将其除以 2;若 n 为奇数,则将其乘以 3,然后再加 1。如此经过有限次 # 运算后,总可以得到自然数 1。人们把谷角静夫的这一发现叫做“谷角猜想”。请你编写一 # 个程序,由键盘输入一个自然数 n,把 n 经过有限次运算后,最终变成自然数 1 的全过程 # 打印出来。 def Conjecture(n): c = 0 while n != 1: c += 1 if n % 2 == 0: n = int(n/2) print "此时N为偶数,第%d次变换结果是%d" % (c,n) else: n = n * 3 + 1 print "此时N为奇数,第%d次变换结果是%d" % (c,n) return c n = int(input("请输入任意自然数N: ")) print "此时其谷角猜想的变换过程如下:" k = Conjecture(n) print "该数共经过%d的变换,得到自然数1" %(k)
第二题:
#!/usr/bin/env python # -*- coding:utf-8 -*- # 从报纸中抽出一张,对折,再对折,继续对折。可以把它折叠 30 次吗?假设可以(你 # 可能无法把它折叠 8 次以上)折叠 30 次,请问厚度是多少?假设纸的厚度是 1/200 厘米。 # 编程程序来解决这个难题。提示用户输入折叠次数,输后最终的厚度,以米为单位。 #获取单个纸张的厚度 def double_p(n): paper_th = float(1.0 / 200 / 100) for i in xrange(n): paper_th *= 2 return paper_th print double_p(30)
第三题:
#!/usr/bin/env python # -*- coding:utf-8 -*- #A(n,m) = n! / (n-m)! def Factorial(n): k = 1 if n == 0: return 1 else: for i in xrange(1,n+1): k *= i return k result = (Factorial(10) / Factorial(8)) * (Factorial(8) / Factorial(7)) * (Factorial(7) / Factorial(6)) print "不同的算法有%d" % (result)
第四题:
#!/usr/bin/env python # -*- coding:utf-8 -*- def js(salary,sst): tax_free = 3500 pay_rate = salary - 3500 - sst if pay_rate <= 1500: rate = 0 elif 1500 < pay_rate <= 4500: rate = pay_rate * 0.1 elif 4500 < pay_rate <= 9000: rate = pay_rate * 0.2 elif 9000 < pay_rate <= 35000: rate = pay_rate * 0.25 elif 35000 < pay_rate <= 55000: rate = pay_rate * 0.30 elif 55000 < pay_rate <= 80000: rate = pay_rate * 0.35 elif pay_rate > 80000: rate = pay_rate * 0.45 return rate salary = float(raw_input("Input your salary: ")) sst = float(raw_input("Input your 保险费用: ")) rate = js(salary,sst) print "应交税%f" %(rate)