POH7 안도 안 씨에게 수영복을 파이썬으로 선물 한 이야기

14002 단어 Python3paiza

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]로 거꾸로
  • integer로 다시 변환하고 이전 0을 제거하십시오
  • 또한 문자열로 변환하여 처음부터 9 번째까지 얻기
  • 취득한 것을 거꾸로 해 integer에 다시 돌린다

  • 이것만으로 충분했습니다.

    좋은 웹페이지 즐겨찾기