34、漢諾塔
題目:
在印度,有這么一個古老的傳說:在世界中心貝拿勒斯(在印度北部)的圣廟里纺酸,一塊黃銅板上插著三根寶石針嘲碱。印度教的主神梵天在創(chuàng)造世界的時候金砍,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔麦锯。不論白天黑夜恕稠,總有一個僧侶在按照下面的法則移動這些金片:一次只移動一片,不管在哪根針上扶欣,小片必須在大片上面鹅巍。僧侶們預(yù)言,當所有的金片都從梵天穿好的那根針上移到另外一根針上時料祠,世界就將在一聲霹靂中消滅骆捧,而梵塔、廟宇和眾生也都將同歸于盡髓绽。
現(xiàn)在請你計算出起始有n個金片的漢諾塔金片全部移動到另外一個針上時需要移動的最少步數(shù)是多少敛苇?
輸入
每組測試數(shù)據(jù)是一個整數(shù)n,表示起始時金片的個數(shù)。(0<n<=100)
輸出
輸出把金片起始針上全部移動到另外一個針上需要移動的最少步數(shù)顺呕。
參考答案:
def f(n):
if n==1:
return 1
else:
return 2*f(n-1)+1
print(f(n))
35枫攀、回文素數(shù)
題目:
回文素數(shù)是指一個數(shù)既是素數(shù)又是回文數(shù)。例如塘匣,131脓豪,既是素數(shù)又是回文數(shù)。給你一個正整數(shù)n(1 <= n <= 100), 請你輸出從小到大排列的的第n個回文素數(shù)忌卤。
例如:
n = 1, 則輸出 2
n = 5, 則輸出 11
參考答案:
def isPrime(n): # 先判斷一個數(shù)是否是素數(shù)
if n <= 1:
return False
i =2
while i*i <= n:
if n % i == 0:
return False
i += 1
return True
L = [2]
for i in range(2,100000):
if i % 2 and str(i) == str(i)[::-1]: # 這里i % 2 == 1
if isPrime(i):
L.append(i)
n=5
print(L[n-1])
36扫夜、反素數(shù)
題目:
反素數(shù)(逆向拼寫的素數(shù))是指一個將其逆向拼寫后也是一個素數(shù)的非回文數(shù)。例如:17和71都是素數(shù),所以笤闯,17和71都是反素數(shù)堕阔。
給你一個正整數(shù)n(1 <= n <= 100), 請你輸出從小到大排列的的第n個反素數(shù)。
例如:
n = 1, 則輸出 13
n = 5, 則輸出 71
參考答案(新手):
def isPrime(n): # 先判斷一個數(shù)是否是素數(shù)
if n <= 1:
return False
i =2
while i*i <= n:
if n % i == 0:
return False
i += 1
return True
L = []
for i in range(10,100):
if i % 2==1:
if isPrime(i):
L.append(i)
N = []
for j in L:
for f in L:
if str(j) != str(f) and str(j) == str(f)[::-1]:
N.append(j)
n=1
print(N[n-1])