Can someone please help, what am I doing wrong ? Or on what test cases my solution is failing. It passes 12/19 test cases.
Here is the atcoder question link : LINK
Here is my solution:
Code
Thanks in advance :)
# | User | Rating |
---|---|---|
1 | tourist | 3993 |
2 | jiangly | 3743 |
3 | orzdevinwang | 3707 |
4 | Radewoosh | 3627 |
5 | jqdai0815 | 3620 |
6 | Benq | 3564 |
7 | Kevin114514 | 3443 |
8 | ksun48 | 3434 |
9 | Rewinding | 3397 |
10 | Um_nik | 3396 |
# | User | Contrib. |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 155 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
10 | djm03178 | 152 |
Can someone please help, what am I doing wrong ? Or on what test cases my solution is failing. It passes 12/19 test cases.
Here is the atcoder question link : LINK
Here is my solution:
ll dp[110][110];
ll mod=998244353;
ll solve(ll i,vector<ll>& a,ll sum,ll chosen)
{
ll n=a.size();
if(i==n)
{
if(chosen==0)
{
return 0;
}
// debug(sum)
if(sum%chosen==0)
return 1;
else
return 0;
}
// cout<<1;
if(dp[i][chosen]!=-1)
return dp[i][chosen]%mod;
return dp[i][chosen]=(solve(i+1,a,sum+a[i],chosen+1)%mod+solve(i+1,a,sum,chosen)%mod)%mod;
}
void solve()
{
ll n;
cin>>n;
vi a(n);
rep(110)
{
for(ll j=0;j<110;j++)
dp[i][j]=-1;
}
rep(n)
cin>>a[i];
cout<< solve(0,a,0,0);
}
Thanks in advance :)
Name |
---|
6
4 4 5 7 8 9
Suppose when you are at index 5 (1-based indexing) , elements you picked were: 4 5 ( let's call it way 1) and in another recursive call at index 5 you picked elements 4 7 ( way 2) , now it may be possible that in way 1 you get an integer average value but it may not be possible with way 2
(but your program will return the answer calculated in way 1)
, because sum of elements differ in both ways.Try to visualize the whole process now and change your code accordingly.
What about adding another state to your dp ?
We can store remainder of elements we picked when divided by number of chosen elements in the third state.
Ohh.. Got it man. You are a saviour. Thanks.
Can't we take another state of 'sum' instead of 'average' ? (integer overflow might be the case or ?)
Sorry my bad, actually we can't take either of them as a state because both of them range from 1 to 1e9 and we can't store that many values even in a 1-D vector.
I edited my previous comment, please read it now. Sorry again