上一页 1 2 3 4 5 6 7 8 9 10 ··· 27 下一页
摘要: 威佐夫博奕(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。 这种情况下是颇为复杂的。我们用(ak,bk)(ak ≤ bk ,k=0,1,2,…,n)表示两堆物品的数量并称其为局势,如果甲面对(0,0),那么甲已经输了,这种局势我们称为奇异局势。前几个奇异局势是:(0,0)、(1,2)、(3,5)、(4,7)、(6,10)、(8,13)、(9,15)、(11,18)、(12,20)。 可以看出,a0=b0=0,ak是未在前面出现过的最小自然数,而 bk= ak + k,奇异局势有如下三条性质: ... 阅读全文
posted @ 2013-08-16 21:03 执着追求的IT小小鸟 阅读(262) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1850这题里说的是尼姆博弈的问题,尼姆博弈说的是三堆,但是他的方法却可以推广到任意堆。姆博奕(Nimm Game):有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。 这种情况最有意思,它与二进制有密切关系,我们用(a,b,c)表示某种局势,首先(0,0,0)显然是奇异局势,无论谁面对奇异局势,都必然失败。第二种奇异局势是(0,n,n),只要与对手拿走一样多的物品,最后都将导致(0,0,0)。仔细分析一下,(1,2,3)也是奇异局势,无论对手如何拿,接下来都. 阅读全文
posted @ 2013-08-16 20:21 执着追求的IT小小鸟 阅读(731) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2149最后一种情况需注意#includeint main(){ int n,i,m; while(scanf("%d%d",&n,&m)!=EOF) { if(n%(m+1)==0) printf("none"); else { if(m==n)printf("%d",m); else if(m>n) for(i=n;i<=m;i++)... 阅读全文
posted @ 2013-08-16 16:49 执着追求的IT小小鸟 阅读(226) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1846初学博弈论,这题是巴什博弈:只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)*r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获胜。总之,要保持给对手留. 阅读全文
posted @ 2013-08-16 16:23 执着追求的IT小小鸟 阅读(146) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1097在数论里学到了整数的快速幂,这里居然是秒过的。。。。瞬间就知道自己以前多菜了#include__int64 puzzle(__int64 a,__int64 b){ __int64 ans=1; while(b) { if(b&1) ans=ans*a%10; a=a*a%10; b/=2; } return ans;}int main(){ __int64 a,b; whi... 阅读全文
posted @ 2013-08-16 14:28 执着追求的IT小小鸟 阅读(165) 评论(0) 推荐(0) 编辑
摘要: http://acm.fzu.edu.cn/problem.php?pid=1649这里关键的问题在于数据达到了1亿亿,没办法用普通的方法进行运算,所以这里用到了米勒拉宾大素数判定方法。算法流程:根据费马小定理,a^(n-1)mod n==1,1#include#include#define MAX 10__int64 muti(__int64 a,__int64 b,__int64 m){ __int64 ans=0; while(b) { if(b&1) ans=(ans+a)%m; ... 阅读全文
posted @ 2013-08-16 11:22 执着追求的IT小小鸟 阅读(411) 评论(0) 推荐(0) 编辑
摘要: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=24&problem=310&mosmsg=Submission+received+with+ID+12203932这题是整数快速幂取模的模板题,主要就是用二进制把幂分成二进制数,然后算出相对应上的二进制的0和1,进而可以确定是否要乘进结果里面快速求正整数次幂,当然不能直接死乘。举个例子:3 ^ 999 = 3 * 3 * 3 * … * 3直接乘要做998次乘法。 阅读全文
posted @ 2013-08-15 17:01 执着追求的IT小小鸟 阅读(426) 评论(1) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2576推导公式,,,还要学下同余模里的除法怎么处理。。。设数列{an},a1=1, a2=1+2, a3=1+2+3,...,an=1+2+...+n易知an的通项公式an=n*(n+1)/2=(1/2)*(n^2+n)记Sn为{an}前n项之和所以,原式=Sn-1 =(1/2)*[(1+2+3+...+n)+(1^2+2^2+3^2+...+n^2)]-1=(1/2)*[(1/2)*n*(n+1)+(1/6)*n*(n+1)*(2n+1)]-1 =(1/12)*n*(n+1)*(3+2n... 阅读全文
posted @ 2013-08-15 11:31 执着追求的IT小小鸟 阅读(145) 评论(0) 推荐(0) 编辑
摘要: #include#includeint pri[66000];int prime(){ int i,j; for(i=2;i1) { if(pri[i]) while(n%i==0) { if(j==0) {printf("%d",i);j++;} else printf("*%d",i);//逐一找到除数,按格式输出 n/=i; } i++; } printf... 阅读全文
posted @ 2013-08-13 23:26 执着追求的IT小小鸟 阅读(310) 评论(1) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2504#includeint gcd(int a,int b){ int r=a%b; while(r) { a=b; b=r; r=a%b; } return b;}int main(){ int t,a,b,c; scanf("%d",&t); while(t--) { scanf("%d%d",&a,&b); c=2*b; while(gcd(a,c)!=b) c+=... 阅读全文
posted @ 2013-08-13 22:00 执着追求的IT小小鸟 阅读(135) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 27 下一页