BNUOJ--29378 Adidas vs Adivon

给出一个长宽分别为L和H的矩形,L和H都是整数。俩个人依次对折这个矩形,要求对折后的长宽也为整数,不能对折的一方输。

http://www.bnuoj.com/bnuoj/problem_show.php?pid=29378

如果L和H的素因子包含奇数个2后手赢,偶数个2先手赢。

#include 
#include 
#include 
using namespace std;
int n, L, H;
int a[21];
int main(){
    scanf("%d", &n);
    a[0] = 1;
    for(int i=1; i<=20; i++) a[i] = a[i - 1] * 2;  //预处理2^i,因为数据范围是1e6,所以求道2^20就够了
    while(n--){
        scanf("%d%d", &L, &H);
        int ans = 0;
        for(int i=20; i>=0; i--)
        if(L % a[i] == 0){
            ans += i;
            break;
        }
        for(int i=20; i>=0; i--)
        if(H % a[i] == 0){
            ans += i;
            break;
        }
        if(ans % 2) puts("Adidas loses");
        else puts("Adivon prevails");
    }
    return 0;
}



你可能感兴趣的:(博弈,bnuoj)