題意:玩兒遊戲,可以把乙個數x變成xi,xi&x == x,問先手能不能贏
題解:這個轉換,也就說把x變成二進位制後,只能在原來有1的位置上寫1,並且,至少有一位不寫1
很容易想到,乙個數的sg值,只跟這個數的二進位制有多少個1有關,轉換也很好想,但時間肯定來不及
其實只要把所有(<64)的sg值打表出來即可
以前也想到過這種打表,當時資料很大,好像有1e5,被隊友狠狠嘲笑了一番
下面是打表,真的是純暴力,本地都跑了好久
int sg[110];
int vis[30000010];
void init();
int main()
ans^=sg[sum];
}if(ans) printf("b\n");
else printf("l\n");
}return 0;
}
51nod 1714 B君的遊戲
先上 再說吧 include includeusing namespace std long long n,num,sum int main num 2 if x 2 1 if sum 9 0 int main int sum 0 for int i 1 i 64 i if b i 2 sum if...
51NOD 1629 B君的圓錐
1629 b君的圓錐 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 b君要用乙個表面積為s的圓錐將白山雲包起來。b君希望包住的白山雲體積盡量大,b君想知道體積最大可以是多少。注意圓錐的表面積包括底面和側面。input 一行乙個整數,表示表面積s。1 s 10 9...
51nod 1629 B君的圓錐
1629 b君的圓錐 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 b君要用乙個表面積為s的圓錐將白山雲包起來。b君希望包住的白山雲體積盡量大,b君想知道體積最大可以是多少。注意圓錐的表面積包括底面和側面。input 一行乙個整數,表示表面積s。1 s 10 9...