摘要:
/**题号:1907*State: 15MS 268K 572 B C++*题目大意:* Nim博弈的变形,就是先取完者败。*解题思路:* 如上题。* //必输态 S0(考虑奇偶), T2* //必胜态 S2, S1, T0*/View Code 1 #include <iostream> 2 using namespace std; 3 int main(void) 4 { 5 int cas; 6 scanf("%d", &cas); 7 while(cas--) 8 { 9 ... 阅读全文
摘要:
学了三种简单博弈(前一篇)之后,我又在这篇博文这学了HDU1907的解法下面说下我的理解,有些借鉴原博文。这题和下面的题有点相似,但是又不一样也就是说把最后取完的定为输家改成,最后取完的定为赢家。后面的这个要简单一点,下面是简单分析,先来看这个简单的首先我们用T表示当前状态的所有火柴数异或为0,否则极为S。1.S可以转化成T我们设一共有n堆火柴,每堆有k(i)根.那么S态中k(1)^k(2)^……^k(n) != 0,这个值我们记为c那么肯定有某个k(i)的最高位和c的最高位同为1,不然c的最高位变成了0假设这个最高位和c的最高位同为1的是第m堆,这样我们可以得到x = k(m)^c < 阅读全文
摘要:
先看费马小定理: 费马小定理是数论中的一个重要定理,其内容为: 假如p是质数,且(a,p)=1,那么 a^(p-1) ≡1(mod p) 假如p是质数,且a,p互质,那么 a的(p-1)次方除以p的余数恒等于1逆元:设m为正整数,a为正整数,如果存在a' 使得:a X a' = 1(mod m)a'叫做a的逆元。密码学中用到了这个结论。RSA.证明:x^(MOD-1) = 1 (mod MOD)x*x^(MOD-2) = 1 (mod MOD) x^(MOD-2)为其逆元其中MOD 为素数 , x要小于MOD,如果x>=MOD,可以先对x取MOD,这不会影响结果。 阅读全文
摘要:
/**State 0MS 364K 1978 B C++*题目大意:* 给定n堆牌,一开始每一堆牌有n张,然后有两种操作,一种是L翻转,一种* 是R翻转,L翻转是将最左边的那一堆全部翻转贴到最接近的右边那一堆的* 上方,R翻转类似,然后要求最后只剩下一堆的时候,各个牌的状态。*解题思路:* 直接用栈来模拟牌的翻转即可,一开始设置n个栈,然后用两个变量来指向* 最左边那一堆跟最右边那一堆,直到最后两个变量均指向同一堆,操作结束。*题目考点:* 比较基础,但稍微有一点点猥琐的模拟题。*/View ... 阅读全文