[金貨5]2023号:不思議な少数
🛠 質問する
https://www.acmicpc.net/problem/2023
👩🏻💻 解決策
まずはタイムアウトで合わないプール...
一番左側の数は(2,3,5,7)なので、各始点(?)makePrime関数が呼び出されました
次に、右側に表示できる数字(奇数)を貼り付け、その値が小数であればmakePrimeを再帰的に呼び出します.
nビットに到達すると出力(n=0)値
ソースコード
def isPrime(n):
if n < 2: return False
cnt = 0
for i in range(2, n):
if n % i == 0:
cnt += 1
break
if cnt == 0:
return True
else:
return False
n = int(input())
def makePrime(first, n):
if n == 0:
print(first)
for i in [1, 3, 5, 7, 9]:
tmp = first*10 + i
if isPrime(tmp):
makePrime(tmp, n-1)
for i in [2, 3, 5, 7]:
makePrime(i, n-1)
💡 他人の解答
def find(num):
for i in range(2, int(int(num)**0.5)+1):
if int(num) % i == 0:
return
if len(num) == n:
print(num)
return
for p in prime:
find(num+p)
n = int(input())
start = ['2', '3', '5', '7']
prime = ['1', '3', '7', '9']
for s in start:
find(s)
Reference
この問題について([金貨5]2023号:不思議な少数), 我々は、より多くの情報をここで見つけました https://velog.io/@hyunnn/골드5-2023번-신기한-소수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol