XとYに何かを掛けてAとBが作れるかを試す。Xだけでどちらも作れるのなら、Yの候補は無限個。
class KingXNewCurrency {
public:
int howMany(int A, int B, int X)
{
if (A % X == 0 && B % X == 0) return -1;
int ret = 0;
for (int Y = 1; Y <= max(A, B); ++Y) {
if (Y == X) continue;
bool a = false;
bool b = false;
for (int s = 0; s <= 200; ++s) {
for (int t = 0; t <= 200; ++t) {
if (A == s * X) a = true;
if (B == s * X) b = true;
if (A == t * Y) a = true;
if (B == t * Y) b = true;
if (A == s * X + t * Y) a = true;
if (B == s * X + t * Y) b = true;
}
}
if (a && b) ++ret;
}
return ret;
}
};
0 件のコメント :
コメントを投稿