Div2も練習。
http://community.topcoder.com/stat?c=problem_statement&pm=12376
PとKが与えられるので、3*(N/K)+(N/3)==PとなるようなNを求める問題。
上の式を変形するとN=3KP/(9+K)。
分数で小数点以下を切り擦れる処理を考慮して、上記Nの周辺を探索して3*(N/K)+(N/3)==PとなるNを探せばよい。
class NinjaTurtles { public: int countOpponents(int P, int K) { int N,TN; TN=3*K*P/(9+K); for(N=TN-2*K;N<=TN+2*K;N++) if(N/3+(N/K)*3 == P) return N; return -1; } };
まとめ
Div2 Easyとしては珍しいタイプの問題な気がする。