아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

트리솔인

시간 제한2초메모리 제한256 MB

요약
각 좌표에 매년 양수가 더해지는 k차원 나이 벡터의 수명 기록 중 좌표 합이 n인 벡터에서 끝나는 것의 최대 개수를 7340033으로 나눈 나머지를 구한다.
난이도

어려움10점 중 9점

유형
조합론, 동적 계획법, 정수론, 수학
정답자
아직 제출이 없습니다

문제

최근 트리솔 행성의 주민들은 지구인처럼 나이를 정수 하나로 나타내지 않고, k개의 정수로 이루어진 벡터로 나타낸다는 사실이 밝혀졌다. 갓 태어난 트리솔인의 나이 벡터는 k개의 0으로 이루어져 있다. 나이가 들면서 매년 나이 벡터의 각 원소에 어떤 양수가 더해진다.

트리솔인의 삶의 역사란 그가 살아오면서 가졌던 모든 나이 벡터의 집합을 말한다. 지구의 과학자들은 같은 역사를 가진 두 트리솔인은 존재하지 않는다는 것을 알아냈다.

이제 과학자들은 삶의 역사가 원소의 합이 n인 벡터에서 끝나는 트리솔인의 최대 수를 알고 싶어 한다. 이 값을 소수 7340033 = 7·2^20^ + 1로 나눈 나머지를 구하는 프로그램을 작성하시오.

예를 들어 k = 2일 때, 삶의 역사가 합이 5인 벡터에서 끝나는 트리솔인은 8명 존재할 수 있다. 그들의 삶의 역사는 다음과 같다:

  • (0, 0) - (1, 1) - (2, 3);
  • (0, 0) - (1, 1) - (3, 2);
  • (0, 0) - (1, 2) - (2, 3);
  • (0, 0) - (1, 4);
  • (0, 0) - (2, 1) - (3, 2);
  • (0, 0) - (2, 3);
  • (0, 0) - (3, 2);
  • (0, 0) - (4, 1).

입력

첫째 줄에 두 정수 n과 k가 주어진다. n은 마지막 나이 벡터의 원소 합이고, k는 벡터의 원소 개수이다 (1 ≤ n ≤ 4239, 1 ≤ k ≤ 10^9).

출력

삶의 역사가 원소의 합이 n인 벡터에서 끝날 수 있는 트리솔인의 최대 수를 출력한다. 답은 7340033 = 7·2^20^ + 1로 나눈 나머지로 출력해야 한다.

예제1

  1. 예제 1

    입력
    5 2
    
    예상 출력
    8