I am trying the CSES problem set. I am getting WA on a few tests in Two Sets — II question. Here is the link for the question https://cses.fi/problemset/task/1093

My approach is to create a dp[i][j] which stores the number of ways to get sum i using first j indices. My target is to get sum n*(n-1)/4 . Formula I use is- dp[i][j]=dp[i][j-1]+dp[i-j][j-1];

I initialized dp[0][i] to 1 for all i<=n bcoz the only possible way is to select no indice at all. And also dp[i][0] to 0 for all 1<=i<=target bcoz its not possible to create a sum using no digits at all. I then print (dp[target][n])/2;

Please help. I am getting WA on few tests.

code-

https://codeforces.com/contest/1400/submission/91190026

The question is irrelevant in this link. Only the code is relevant

Auto comment: topic has been updated by jayantjha1109 (previous revision, new revision, compare).Auto comment: topic has been updated by jayantjha1109 (previous revision, new revision, compare).Auto comment: topic has been updated by jayantjha1109 (previous revision, new revision, compare).Use inverse modulo under 2 instead of just dividing the number.

Sorry for being silly but what is (inverse modulo under 2) supposed to mean?

If you are dividing some number a by any other number by b and you need to take modulo also after or before the division operation like ans = (a / b ) % MOD. Then you cannot do this directly, you have to calculate the inverse modulo of b under MOD then do this:

ans = a % MOD * (inv(b)) % MOD.

To calculate you can use fermate little theorem if MOD is prime: inv(b) = bᴹᴼᴰ⁻² % MOD. Now you are done, you can find inv(b) efficiently by power expo.

Thanks it got accepted. I did not know this property before. So, thanks for introducing it to me.

Late thanks here! This helped me quite a lot.

+1

+1