-
[2410] 2의 멱수의 합BOJ 2021. 12. 9. 03:02
https://www.acmicpc.net/problem/2410
2410번: 2의 멱수의 합
첫째 줄에 경우의 수를 출력한다. 답이 커질 수 있으므로 1,000,000,000으로 나눈 나머지를 출력한다.
www.acmicpc.net
<문제>
1'000'000 이하의 2의 멱수를 전부 전처리해두고, 배낭문제와 비슷한 방식으로 풀 수 있다.
<소스코드>
1234567891011121314151617181920212223#include <bits/stdc++.h>using namespace std;int n, dp[1000001], base[20];const int M = 1000000000;int main(void) {cin >> n;base[0] = 1;int i, j;for (i = 1;; i++) {if (base[i - 1] * 2 > 1000000) break;base[i] = base[i - 1] * 2;}dp[0] = 1;for (i = 0; i < 20; i++) {if (base[i] > n) break;for (j = base[i]; j <= n; j++) {dp[j] += dp[j - base[i]];dp[j] %= M;}}cout << dp[n];return 0;}cs 'BOJ' 카테고리의 다른 글
[11034] 캥거루 세마리2 (0) 2021.12.09 [20117] 호반우 상인의 이상한 품질 계산법 (0) 2021.12.09 [4159] 알래스카 (0) 2021.12.08 [4806] 줄 세기 (0) 2021.12.07 [3163] 떨어지는 개미 (0) 2021.12.07