경로에 n개의 블록이 있고 작업자가 블록에 색상 타일을 놓고 있다고 가정합니다. 작업자는 경로에 있는 블록 번호가 4 또는/및 2로 나눌 수 있지만 42로 나눌 수 없는 경우 색 타일을 놓는 방식으로 블록을 배치하고 있습니다. 우리는 그가 k개의 색상 타일로 시작했다면 그가 커버할 수 있는 블록의 수를 알아내야 합니다.
따라서 입력이 k =16과 같으면 출력은 32가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- MOD =10^9 + 7
- 몫 :=(k / 20)의 하한값
- 나머지 :=k 모드 20
- 나머지가 0이면
- return((42 * 몫 - 2) 모드 MOD)
- 그렇지 않으면
- return((42 * 몫 + 2 * 나머지) 모드 MOD)
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(k): MOD = 10**9 + 7 quotient = k // 20 remainder = k % 20 if remainder == 0: return ((42 * quotient - 2) % MOD) else: return ((42 * quotient + 2 * remainder) % MOD) print(solve(16))
입력
16
출력
32