SRM604 div2 med PowerOfThreeEasy
問題概要
- step k でx方向かy方向に3k進む
- stepは0から始まる
- xとyが与えられるのでその座標にちょうど到達できるか判定せよ
制約
- 0≦x≦109
- 0≦y≦109
解説
319 = 1162261467なので高々19ステップで制約の座標には到達できるかどうかわかる。
各stepでx方向に行くかy方向に行くか全探索O(219)。
コード
class PowerOfThreeEasy { public: string ableToGet(int x, int y) { int th[20]; FOR(i,0,20) th[i] = pow(3,i); FOR(i,0,1<<20) { int X = 0, Y = 0; FOR(j,0,20) { if(X == x && Y == y) return "Possible"; if((i>>j)&1) X += th[j]; else Y += th[j]; } if(X == x && Y == y) return "Possible"; } return "Impossible"; } };