Task: | Quadratic Quest |
Sender: | Olli |
Submission time: | 2018-09-06 18:15:02 +0300 |
Language: | C++ |
Status: | READY |
Result: | ACCEPTED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.02 s | details |
#2 | ACCEPTED | 0.01 s | details |
#3 | ACCEPTED | 0.02 s | details |
#4 | ACCEPTED | 0.03 s | details |
#5 | ACCEPTED | 0.13 s | details |
#6 | ACCEPTED | 0.12 s | details |
#7 | ACCEPTED | 0.14 s | details |
#8 | ACCEPTED | 0.12 s | details |
#9 | ACCEPTED | 0.06 s | details |
#10 | ACCEPTED | 0.06 s | details |
Code
#include <iostream> using namespace std; const int N = 1e3 + 5; const int M = 1e9 + 7; int dp[N][N]; int main() { int n, m; cin >> n >> m; for(int i = 1; i <= m; ++i) { dp[1][i] = 1; } for(int i = 2; i <= n; ++i) { for(int j = 1; j <= m; ++j) { //Calculate dp[i][j]; int k = 1; while(j + k*k <= m) { dp[i][j] += dp[i-1][j + k*k]; if(dp[i][j] >= M) dp[i][j] -= M; ++k; } k = 0; while(j - k*k >= 1) { dp[i][j] += dp[i-1][j - k*k]; if(dp[i][j] >= M) dp[i][j] -= M; ++k; } } } int s = 0; for(int j = 1; j <= m; ++j) { s += dp[n][j]; if(s >= M) s -= M; } cout << s << "\n"; }
Test details
Test 1
Verdict: ACCEPTED
input |
---|
3 5 |
correct output |
---|
45 |
user output |
---|
45 |
Test 2
Verdict: ACCEPTED
input |
---|
1 1 |
correct output |
---|
1 |
user output |
---|
1 |
Test 3
Verdict: ACCEPTED
input |
---|
1 1000 |
correct output |
---|
1000 |
user output |
---|
1000 |
Test 4
Verdict: ACCEPTED
input |
---|
1000 1 |
correct output |
---|
1 |
user output |
---|
1 |
Test 5
Verdict: ACCEPTED
input |
---|
1000 1000 |
correct output |
---|
387641086 |
user output |
---|
387641086 |
Test 6
Verdict: ACCEPTED
input |
---|
1000 961 |
correct output |
---|
661272544 |
user output |
---|
661272544 |
Test 7
Verdict: ACCEPTED
input |
---|
999 1000 |
correct output |
---|
735583829 |
user output |
---|
735583829 |
Test 8
Verdict: ACCEPTED
input |
---|
999 961 |
correct output |
---|
358783681 |
user output |
---|
358783681 |
Test 9
Verdict: ACCEPTED
input |
---|
687 694 |
correct output |
---|
317548057 |
user output |
---|
317548057 |
Test 10
Verdict: ACCEPTED
input |
---|
930 573 |
correct output |
---|
775707207 |
user output |
---|
775707207 |