diff options
Diffstat (limited to '03_dynamic_programming/dice_combinations_1633.cpp')
| -rw-r--r-- | 03_dynamic_programming/dice_combinations_1633.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/03_dynamic_programming/dice_combinations_1633.cpp b/03_dynamic_programming/dice_combinations_1633.cpp new file mode 100644 index 0000000..4e76d1d --- /dev/null +++ b/03_dynamic_programming/dice_combinations_1633.cpp | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | #include <algorithm> | ||
| 2 | #include <array> | ||
| 3 | #include <iostream> | ||
| 4 | |||
| 5 | // We use a funny memory optimization: we only store the last 7 values. | ||
| 6 | |||
| 7 | int main() { | ||
| 8 | constexpr unsigned mod = 1e9+7; | ||
| 9 | int n; | ||
| 10 | std::cin >> n; | ||
| 11 | std::array<int, 7> v{0}; | ||
| 12 | v[0] = 1; | ||
| 13 | for (int i = 1; i <= n; i++) { | ||
| 14 | v[i%7] = 0; | ||
| 15 | for (int j = std::max(0, i-6); j < i; j++) | ||
| 16 | v[i%7] = (v[i%7]+v[j%7]) % mod; | ||
| 17 | } | ||
| 18 | std::cout << v[n%7] << "\n"; | ||
| 19 | } | ||
