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 :).
No comments :
Post a Comment