解いた問題

3/18/2012

SRM537 Div1 Easy

275
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 件のコメント :

コメントを投稿