SRM604 div1 Easy PowerOfThree
メモ
Possibleの場合
xとyの和は
± 30 ± 31 ± ... ± 3k
なので、x座標かy座標どちらかが3の倍数+1or3の倍数-1になる
余計な1を消して3で割ると
± 30 ± 31 ± ... ± 3k-1
となり、x座標かy座標どちらかが3の倍数+1or3の倍数-1になる
これを繰り返していくとx=0、y=0となる
上記を満たさない場合はImpossible
コード
class PowerOfThree { public: string ableToGet(int x, int y) { x = abs(x); y = abs(y); FOR(i,0,30) { if(x == 0 && y == 0) return "Possible"; else if(x % 3 != 0 && y % 3 == 0) { if(x % 3 == 1) x--; else x++; } else if(x % 3 == 0 && y % 3 != 0) { if(y % 3 == 1) y--; else y++; } else return "Impossible"; x /= 3; y /= 3; } return "Impossible"; } };