티스토리 뷰
https://www.acmicpc.net/problem/2688
d[i][j] = i자리수 이면서 마지막 자리수가 j인 수의 개수
d[1][j] = 1 한자리수일 때는 모두 1이다.
d[i][j] += d[i-1][k] (0<=k<=j) 하나 작은 자리수에서 마지막 자리수가 최대 j까지 올 수 있는 경우를 모두 합한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <cstdio> long long t,n,i,j,k,s,d[65][10]; int main() { for(j=0;j<10;j++) d[1][j]=1; for(i=2;i<65;i++) for(j=0;j<10;j++) for(k=0;k<=j;k++) d[i][j]+=d[i-1][k]; scanf("%lld",&t); while(t--) { scanf("%lld",&n); s=0; for(j=0;j<10;j++) s+=d[n][j]; printf("%lld\n",s); } return 0; } | cs |
'Algorithm > BOJ' 카테고리의 다른 글
9009 피보나치 (0) | 2018.07.03 |
---|---|
15789 CTP 왕국은 한솔 왕국을 이길 수 있을까? (0) | 2018.06.27 |
11497 통나무 건너뛰기 (0) | 2018.06.07 |
10219 Meats On The Grill (0) | 2018.06.07 |
11502 세 개의 소수 문제 (0) | 2018.06.06 |