Hatena::Grouptopcoder

cou929のTopCoder日記

2009-12-25

SRM454 div1 (過去問)

09:11

Easy - DoubleXor

^^ 演算子を定義する. 例えば c = a ^^ b の場合, (cのn桁目) = ( (aのn桁目) ^ (bのn桁目) ) % 10 となる. 整数Nが与えられるので, N ^^ N-1 ^^ N-2 ^^ ... ^^ 1 を求めよ.

とくにひねりなく, ストレートに実装するだけでした.

class DoubleXor {
public:
  int dxor(const int _a, const int _b) {
    int ret = 0;
    int a = _a, b = _b;
    int counter = 0;
    
    while (a > 0 || b > 0) {
      ret += (((a%10) ^ (b%10)) % 10) * (int)pow((double)10, counter++);
      a /= 10, b /= 10;
    }

    return ret;
  }

  int calculate(int N) {
    int ret = N;

    while (N > 0)
      ret = dxor(ret, --N);

    return ret;
  }
};