PAT 甲級 1015 python講解

2021-10-19 12:32:09 字數 1268 閱讀 1873

題目大意:

數字n在d進製下是不是雙重素數。雙重素數是本身和倒數皆為素數的數。

實現:判斷n是否為素數。如果不是,輸出no,否則將該數在d進製下倒過來再化為十進位制數,判斷是否為素數。如果是,輸出yes,否則輸出no.

做這道題目的時候我們需要注意以下兩點:

1>內建函式int可以把字串從指定的進製轉換成十進位制

2>在檢驗是否是整型的時候,要注意0和1,這兩個直接返回否

import math

defcheck

(num)

:if num <=1:

return

0 flag =

1for x in

range(2

,round

(math.sqrt(num))+

1):if num % x ==0:

flag =

0return flag

return flag

defchange

(num, radix)

: result =

''while

(num !=0)

: temp = num % radix

result =

str(temp)

+ result

num = num //radix

return result

if __name__ ==

"__main__"

:while

(true):

line =

input()

.split(

" ")

iflen

(line)

<2:

break

num =

int(line[0]

) radix =

int(line[1]

)if check(num)==1

: rever = change(num, radix)

rever = rever[::

-1] rever =

int(rever, radix)

if check(rever)==1

:print

("yes"

)else

:print

("no"

)else

:print

("no"

)

PAT甲級真題1015 可逆質數

給定兩個整數 nn 和 dd,如果 nn 是乙個質數,並且將 nn 轉化為 dd 進製表示後,再進行反轉,得到的新數字轉化為十進位制表示後如果也是乙個質數,則稱 nn 在 dd 進製系統中,是乙個可逆質數。例如,n 73,d 10n 73,d 10,則 7373 是質數,其十進位制表示反轉後為 37...

浙大pat甲級 1024

可用3個vector來進行處理,先將輸入的數字都壓入到第1第2個vector中,從i 0到k迴圈判斷是否為對稱數,如果不是對稱數則將其與倒轉數相加,並將得到的每一位數加入到第三個vector的頭部,並將新的第三個vector重新賦值給第一第二,直到該數為對稱數或i k結束迴圈。ac include ...

浙大PAT甲級 1039

一開始想到用map 但是會超時。由於題目中的名字由三個字母和乙個數字組成,因此有26 26 26 10種,因此可以用hash來做。使用setmm max max 26 26 26 10 5 同時輸入名字時也應改為char s 5 scanf來輸入。ac include include include...