SRM454 Div1 Easy(250) DoubleXor

DoubleXor

問題文の通りに計算するだけ。

class DoubleXor
{
public:
    int calculate( int N );
    int dxor( int a, int b );
};

int DoubleXor::calculate( int N )
{
    int ans = N;
    for ( int i=N-1; i>0; i-- )
        ans = dxor( ans, i );

    return ans;
}

int DoubleXor::dxor( int a, int b )
{
    int c = 0;
    int t = 1;

    while ( a > 0  ||  b > 0 )
    {
        c += ( a%10 ^ b%10 ) % 10 * t;
        a /= 10;
        b /= 10;
        t *= 10;
    }

    return c;
}