NPM998244353 (Hard)
시간 제한5초메모리 제한512 MB
0부터 MM까지의 각 자릿수 합 상한에 대해, P로 나누어떨어지는 길이 N의 숫자열 개수를 998244353으로 나눈 나머지로 구한다.
문제
길이가 인 정수 중에서 로 나누어떨어지고 각 자리 숫자의 합이 이하인 것이 몇 개인지 세려고 한다. 맨 앞자리가 0이어도 되므로, 0부터 9까지의 숫자를 개 나열한 것은 모두 길이가 인 정수로 본다. 예를 들어 일 때 00과 03도 각각 하나로 센다.
각각에 대해 조건을 만족하는 수의 개수를 998244353으로 나눈 나머지를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 , , 이 공백으로 구분되어 주어진다. (, , )
출력
첫째 줄에 정수 개를 공백 한 칸으로 구분해 출력한다. 앞에서부터 번째 정수()는 일 때의 정답, 즉 길이가 인 정수 중에서 로 나누어떨어지고 각 자리 숫자의 합이 이하인 것의 개수를 998244353으로 나눈 나머지이다.
힌트
, 인 경우 세는 수는 다음과 같다.
- : 00
- : 00, 03, 12, 21, 30
, 인 경우는 다음과 같다.
- : 00
- : 00, 20
- : 00, 12, 20
- : 00, 04, 12, 20, 40