[伯俊]11057:上り坂
7651 ワード
質問する
問題を解く
n=1からn=3まで、以下のルールを見つけました.
n=1の場合
0 1 2 3 4 5 6 7 8 9
n=2の場合
00 01 02 03 04 .. 09
11 12 13 14 15 .. 19
...
i=nであり、端数がjである場合、端数n−1では端数がjから9までの数である.
つまり、ルールは次のようになります.
dp[i][j] = dp[i-1][j] + d[i-1][j+1] + ... + dp[i-1][9]
コード#コード#
import java.util.Scanner;
public class Main {
final static int mod = 10007;
static int num;
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
//수의 길이 입력
num = sc.nextInt();
//long형 배열 선언 및 초기화 dp[자리수][마지막 숫자]
int[][] dp = new int[num+1][10];
for(int i = 0; i < 10 ; i++){
dp[1][i] = 1;
}
for(int i = 2; i <= num; i++){
for(int j = 0 ; j < 10 ; j++){
for(int k = 0; k <= j ; k++){
dp[i][j] += dp[i-1][k];
dp[i][j] %= mod;
}
}
}
int result = 0;
for(int i = 0 ; i < 10 ; i++){
result += dp[num][i];
}
System.out.println(result%mod);
}
}
Reference
この問題について([伯俊]11057:上り坂), 我々は、より多くの情報をここで見つけました https://velog.io/@kdmstj/백준-11057-오르막-수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol