2017-10-31 3 views
0

과제 : 두 개의 자연수 n과 k를 취하는 함수 코르크 스크류를 작성하십시오. 함수는 코르크 마개 방법을 적용한 결과 인 숫자 k로 끝나는 n 기생 번호를 반환해야합니다. 이 함수는 n과 k가 k ≥n 인 한 자리 자연수라고 가정합니다.Python : n - parastic number를 정의하는 코르크 나사 방법

예 :

corkscrew (5, 7) 
        5 x 7 = 35 
       5 x 57 = 285 
       5 x 857 = 4285 
       5 x 2857 = 14285 
       5 x 42857 = 214285 
      5 x 142857 = 714285 

문제점 : 루프에 대한 코드 수 있으므로 결과 입술 변경 또는 N 진화하지 함께 - parastic 번호.

def parasitic(number): 
    """ 
    >>> parasitic(179487) 
    4 
    >>> parasitic(142857) 
    5 
    >>> parasitic(105263157894736842) 
    2 
    >>> parasitic(1234) 
    0 
    """ 

    for n in range(2, 11): 
     res = n * number 
     if str(number)[-1] + str(number)[:-1] == str(res): 
      return n 
    return 0 

def corkscrew(n, number): 
    """ 
    >>> corkscrew(4, 7) 
    179487 
    >>> corkscrew(5, 7) 
    142857 
    >>> corkscrew(2, 2) 
    105263157894736842 
    """ 


    res = n * number 
    count = 0 

    for i in range(1, n): 
     res = n * (str(res)[-i:] + str(number)) 
     count += 1 
     if parasitic(number) == n: 
      return rotateLeft(res) 



def rotateLeft(number): 
    """ 
    >>> rotateLeft(717948) 
    179487 
    >>> rotateLeft(142857) 
    428571 
    >>> rotateLeft(105263157894736842) 
    52631578947368421 
    """ 

    k = str(number) 
    letter = k[:1] 
    numb = k[1:] 
    resultaat = str(numb) + str(letter) 
    return int(resultaat) 
+0

당신은 또한 기생() rotateLeft() 정의를 제공 할 수 있습니까? –

+0

@MaheshKaria : def parasitic()을 추가했습니다 : 정상적으로 작동합니다. – Lien

+0

난 그냥 로컬로 실행할 필요가 그래서 그 함수가 필요합니다 –

답변

0

작동하는 질문에 대한 답 :

def corkscrew(n, number): 
    """ 
    >>> corkscrew(4, 7) 
    179487 
    >>> corkscrew(5, 7) 
    142857 
    >>> corkscrew(2, 2) 
    105263157894736842 
    """ 


    res = n * number 
    count = 0 

    for i in range(0, 65): 
     numb = (str(res)[-i:] + str(number)) 
     numb = int(numb) 
     res = n * numb 
     count += 1 
     if parasitic(numb) == n: 
      return numb 
관련 문제