Topcoder SRM575 Div1

解けた問題:

easy 92.04pt

与えられる数が

・2の偶数乗もしくは偶数

・それ以外

かで場合分けするものでした。

実際にいくつか試してみてそんな法則があったのでそれで行きました。

(証明は頭悪いのでわからない)

コード

#include<iostream>
#include<cstdio>
#include<cmath>
 
#define reps(i,f,n) for(int i = f; i < int(n); i++)
#define rep(i,n) reps(i,0,n)

#define PII pair<int,int>
#define PP pair< int,PII >


using namespace std;

class TheNumberGameDivOne{
    public:
    string find(long long n){
       
        if(n%2) return "Brus";
        unsigned long long x = 2;
       
        for(int i = 1; i < 64; i++){
            if(n==x && i%2)return "Brus";
            x = x<<1;
            cout << x << endl;
        }
       
        return "John";
    }
   
};