2015年2月8日 星期日

Rockethon 2015, problem: (A) Game


對局

#include <cstdio>

int tab[100][100];
int n1, n2, k1, k2;
int getdp(int a, int b){
    if(a*b == 0) return a > 0;
    if(tab[a][b] != -1) return tab[a][b];
    tab[a][b] = 1;
    for(int lx = 1; lx <= a;lx++){
        tab[a][b] *= getdp(b, a - lx);
    }
    tab[a][b] = 1 - tab[a][b];
    return tab[a][b];
}

int main(){
    for(int lx = 0;lx < 100;lx++)
        for(int ly = 0;ly < 100;ly++)
            tab[lx][ly] = -1;
    scanf("%d %d %d %d", &n1, &n2, &k1, &k2);
    puts(getdp(n1, n2) ? "First" : "Second");
    return 0;
}

沒有留言:

張貼留言