2的倍数规律

http://codeforces.com/gym/101061/problem/A

题意:两个盒子,从1开始,取当前未取的最小值x放入First box ,2*x放入Second box。

1、1 3 4  5  7

2、2 6 8 10 14

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <stdio.h>
#include <queue>
#include <string.h>
#include <vector>
#include <map>
#define ME(x , y) memset(x , y , sizeof(x))
#define SF(n) scanf("%d" , &n)
#define rep(i , n) for(int i = 0 ; i < n ; i ++)
#define INF  0x3f3f3f3f
#define mod 1000000007
using namespace std;
typedef long long ll ;



int main()
{
    int t ;
    scanf("%d" , &t);
    while(t--)
    {
        ll n , ans = 0 ;
        scanf("%lld" , &n);
        if(n % 2 == 1)
        {
            printf("First Box
");
        }
        else
        {
            while(n % 2 == 0)
            {
                n /= 2 ;
                ans ++ ;
            }
            if(ans % 2 == 1)
                printf("Second Box
");
            else
                printf("First Box
");
        }

    }

    return 0 ;
}
原文地址:https://www.cnblogs.com/nonames/p/11379384.html