1.题目描述
描述:
Amtel has announced that it will release a 128-bit computer chip by 2010, a 256-bit computer by 2020, and so on, continuing its strategy of doubling the word-size every ten years. (Amtel released a 64-bit computer in 2000, a 32-bit computer in 1990, a 16-bit computer in 1980, an 8-bit computer in 1970, and a 4-bit computer, its first, in 1960.)
Amtel will use a new benchmark - the Factstone - to advertise the vastly improved capacity of its new chips. The Factstone rating is defined to be the largest integer n such that n! can be represented as an unsigned integer in a computer word.
Given a year 1960 ≤ y ≤ 2160, what will be the Factstone rating of Amtel's most recently released chip?
输入:
There are several test cases. For each test case, there is one line of input containing y. A line containing 0 follows the last test case.
输出:
For each test case, output a line giving the Factstone rating.
样例输入:
1960
1981
0
样例输出:
3
8
2.中文翻译
3.题意
4.直接使用阶乘按照题意求解
#encoding=utf-8
import math
while True:
#n用来后面计算阶乘
n = 1
#result用来保存相应n!阶乘的结果
result = 0
#输入年份
y=int(input())
if y==0:
break
#下面思路:
else:
w=(y/10)-194
len=pow(2,w)
while(result<pow(2,len)):
result = math.factorial(n)
n+=1
print(n-2)
5.优化阶乘的解法
import math
lista=[]
while True:
year=int(input())
if year==0:
break
else:
w=(year//10)-194
len=pow(2,w)
n=1
result=0
while(result<len*math.log(2)):
result+=math.log(n)
n+=1
lista.append(n-2)
for i in lista:
print(i)
参考文章:传送锚点