逆数
10286 ワード
作成日:2022年1月7日午後6:04
で入力した数値を反転する関数reverse(x)では、整数xをstringに変換し、リストに列挙し、Pythonで提供されるアレイ関数reverse()を使用して数値を反転します. 7300などの数字が逆さまになると0073となり、正しい整数型にはなりません.(正確には、73のように、前に0があるべきではない)この問題を解決するために、最初の0ではない数字が現れるまで、結果値(反転数)に追加しないようにリストを繰り返します. 模範解答では,以前の整数桁数の和を求めた場合と同様に,与えられた数を10で割って余りを求め,それを結果値に加算して論理を構成している.このように実施すれば、7300などの首都0073は存在しない. why? res=res*10+tではresとtが0であるため、末尾の0は結果値に影響しない.
インプリメンテーションコード
# 뒤집은 소수
import sys
sys.stdin = open("input.txt", "rt")
n = int(input())
numList = list(map(int, input().split()))
def reverse(x):
isFirst = True
result = ""
reverseNumList = list(str(x))
reverseNumList.reverse()
for i in reverseNumList:
if isFirst and i == '0':
pass
elif isFirst and i != '0':
result += i
isFirst = False
else:
result += i
return int(result)
def isPrime(x):
if x == 1:
return False
if x == 2:
return True
m = int(x ** 0.5)
for i in range(2, m+1):
if x % i == 0:
return False
return True
for i in numList:
reverseNum = reverse(i)
if isPrime(reverseNum):
print(reverseNum, end=' ')
模範解答
import sys
sys.stdin=open("input.txt", "r")
n=int(input())
a=list(map(int, input().split()))
def reverse(x):
res=0
while x>0:
t=x%10
res=res*10+t
x=x//10
return res
def isPrime(x):
if x==1:
return False
for i in range(2, x):
if x%i==0:
return False
return True
for x in a:
tmp=reverse(x)
if isPrime(tmp):
print(tmp, end=' ')
差異
Reference
この問題について(逆数), 我々は、より多くの情報をここで見つけました https://velog.io/@lsj8706/뒤집은-소수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol