Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python을 사용하여 상자의 최대 공 수를 찾는 프로그램

<시간/>

l에서 r까지(둘 다 포함) 번호가 매겨진 n개의 공이 있고 1에서 무한대까지 번호가 매겨진 무한한 수의 상자가 있는 공 공장이 있다고 가정합니다. 따라서 각 공을 공 번호의 자릿수 합과 동일한 번호로 상자에 넣으면. (예를 들어, 공 번호 123은 상자 번호 1 + 2 + 3 =6에 넣을 것입니다). 따라서 두 개의 값 l과 r이 있는 경우 가장 많은 공이 있는 상자에서 공의 수를 찾아야 합니다.

따라서 입력이 l =15 r =25와 같으면 출력은

이기 때문에 2가 됩니다.
  • 공 번호 15는 1+5 =6 안에 들어갈 것입니다.

  • 16번 공은 1+6 =7 안에 들어갈 것입니다.

  • 공 번호 17은 1+7 =8 안에 들어갈 것입니다.

  • 공 번호 18은 1+8 =9 안에 들어갈 것입니다.

  • 공 번호 19는 1+9 =10 안에 놓입니다.

  • 공 번호 20은 2+0 =2 안에 들어갈 것입니다.

  • 공 번호 21은 2+1 =3 안에 들어갈 것입니다.

  • 공 번호 22는 2+2 =4 안에 들어갈 것입니다.

  • 공 번호 23은 2+3 =5 안에 들어갈 것입니다.

  • 공 번호 24는 2+4 =6 안에 들어갈 것입니다.

  • 공 번호 25는 2+5 =7 안에 들어갈 것입니다.

따라서 상자 6과 7에는 최대 공 수가 포함되어 있으므로 답은 2입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • dict:=새 지도

  • 범위 l에서 r에 있는 i에 대해 수행

    • 총계:=0

    • i의 각 숫자 j에 대해 수행

      • 총계 :=총계 + j

    • total이 dict에 없으면

      • 사전[총] :=0

    • 사전[총] :=사전[총] + 1

  • dict의 모든 키에 대한 모든 값의 최대값 반환

예제(파이썬)

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

def solve(l, r):
   dict={}
   for i in range(l, r+1):
      total=0
      for j in str(i):
         total += int(j)
      if(total not in dict):
         dict[total] = 0
      dict[total] += 1
   return max([dict[i] for i in dict])

l = 15
r = 25
print(solve(l, r))

입력

15, 25

출력

1