POH7 안도 안 씨에게 수영복을 파이썬으로 선물 한 이야기
Paiza Online Hackathon
연애 SLG : 프로그래밍으로 그녀 만들기 | paiza 온라인 해커슨 7
올해의 크리스마스는 이것으로 혼자가 아닙니다.
팔 자신있는 형님도 그녀를 만들어 봅시다! !
Ruby판( ㅎㅎㅎ 작)
내가 쓴 코드 앞에 아는 사람이 Ruby로 수영복을 선물한 기사 발견했으므로 붙여 둡니다
paiza의 소녀 (안도 안단)에 Ruby를 사용하여 수영복을 선물하자 ♡
고통스러운 기사입니다.
매우 훌륭한 기사입니다! ! 아내에게 걸리는 생각이 한결같이 전해집니다
전치
아직 전부가 전부 Python으로 풀리지 않기 때문에 전 공개까지는 말하고 있지 않습니다만, GitHub에 오르고 있습니다.
nnsnodnb/poh7_girlfriend
내 아내의 소개입니다.
수영복을 선물했을 때의 결과
이런 느낌으로 할 수 있었습니다! ! ! 울음
Swift로 탈선한 곳도 있습니다만, 수영복 문제에 도전해 이런 느낌의 전황에서, 목욕에 들어가고 있을 때 「어째서 쓸데없는 자릿수까지 계산시키고 있었어」라고 생각하고, 했다면 할 수 있었습니다 . 짱짱짱
소개 쓴 빌어 먹을 코드
처음 코드
# coding: utf-8
# 自分の得意な言語で
# Let's チャレンジ!!
# ====================
# 答え自体は出るが速度が遅い
# ====================
import math
import sys
from functools import reduce
def fact(x):
numbers = range(1 , x + 1)
return reduce(lambda x , y : x * y , numbers)
def del_zero(keta):
while True:
if keta[0] == 0:
keta.pop(0)
else:
return keta
data = fact(int(input()))
keta = []
# 桁ごとに区切る
len_data = len(str(data))
for i in range(len_data):
keta.append(int(data % 10))
data = int(data // 10)
before_keta = del_zero(keta)
before_ans = before_keta[:9]
before_ans.reverse()
ans = del_zero(before_ans)
for i in range(len(ans)):
print(ans[i] , end="")
움직이지 않는 것은 없습니다. 하지만 훨씬 비효율적이며 이것이라면 파이썬에서 할 필요가 없다.
두 번째로 작성한 코드
두 번째 코드
# coding: utf-8
# 自分の得意な言語で
# Let's チャレンジ!!
import multiprocessing
import operator
from functools import reduce
def p_fac(n) :
product = 1
if n == 0 : return 1
for num in range(n,0,-c):
product *= num
return product
def p_Factorial(n) :
p = multiprocessing.Pool()
return reduce(operator.mul , p.map(p_fac , range(n , n - c , -1)) , 1)
def del_zero(keta):
while True:
if keta[0] == 0:
keta.pop(0)
else:
return keta
num = int(input())
c = multiprocessing.cpu_count()
data = p_Factorial(num)
keta = []
# 桁ごとに区切る
len_data = len(str(data))
for i in range(len_data):
keta.append(int(data % 10))
data = int(data // 10)
before_keta = del_zero(keta)
before_ans = before_keta[:9]
before_ans.reverse()
ans = del_zero(before_ans)
for i in range(len(ans)):
print(ans[i] , end="")
파이자. 이오 에서 체크한 곳 8개 코어가 있었기 때문에 어떨까라고 생각했기 때문에 해 본 녀석입니다.
뭐 쓸데없는 노력으로 끝났습니다.
최종 코드
최종 코드
# coding: utf-8
# 自分の得意な言語で
# Let's チャレンジ!!
number = int(input())
s = 1
for i in range(1 , number + 1):
s = int(str(int(str(s * i)[::-1]))[:9][::-1])
print(s)
흐름
s * i
를 문자열로 변환하고 [::-1]
로 거꾸로 0
을 제거하십시오 이것만으로 충분했습니다.
Reference
이 문제에 관하여(POH7 안도 안 씨에게 수영복을 파이썬으로 선물 한 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nnsnodnb/items/c6f6501981603caebb23텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)