## Thursday, June 12, 2014

### *Taunts you*

In today's SRM 624 there was a problem that asked you to return something modulo 1000000009. Usually the modulo is 1000000007 or 1000000009 , but people have the impression it is 1000000007 most of the time.

Usually topcoder example tests in this kind of problem include a test case that makes use of the modulo. This is intentional so that people can catch a mistake in writing this constant. Unfortunately, today's problem didn't have such test case.

I didn't even notice. If you read my recap of SRM 624 you will see I even mistakenly used 1000000007 when typing the explanation. And yet I passed , well I have a secret weapon (not so secret).

This is my Greed c++ template:

#include <bits/stdc++.h>
// ${Contest.Name} -${ClassName} (${Problem.Score} points) by vexorian using namespace std; struct${ClassName}
{
${<if Problem.Description.Modulo} const int MOD =${Problem.Description.Modulo};

${<end}${Method.ReturnType} ${Method.Name}(${Method.Params})
{
return ${if Method.ReturnType.Array}{}${else}${Method.ReturnType;zeroval}${end};
}
};

${CutBegin}${<TestCode}
\${CutEnd}


Take a look to the if Problem.Description.Modulo part. Yes, this part of my template actually generates the MOD constant for me :). One day I spent an afternoon or so making the Greed topcoder plugin able to parse the modulo constant and make it accessible to templates. This is why :).