| 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 |
