规则A:
保证留给对方的棋子数为(k+1)*n
规则B:
留下(k+1)*n+1
后拿棋子的就非常被动了
HJin第37题的解答也太复杂了
最大应该是M%N个m/n+1,剩余全部是m/n
Very good answer. +1
31题:
解答说明:
甲只要保证第一次取完后留给乙的棋子数是2的n次方,且大于所取走的棋子数就必胜
因此,如果开始的棋子数是2的n次方,则甲无必胜方法
下面的程序演示了甲的策略,(程序包含了出错处理,所以比较长
I arrived at the idea of 2^n. Another observation is:
If at any given time, A is choosing from odd number of stones, A wins. A simply picks 1 stone at that time.
I did not really read your program,
请输入不大于100000的正整数,输入0退出
16
非必胜
我取走10 剩余:6
请问你取走多少个?
2
你取走2 剩余:4
我取走2 剩余:2
请问你取走多少个?
2
你取走2 剩余:0
你胜利了!
Press any key to continue . . .
[此贴子已经被作者于2007-7-5 19:00:31编辑过]
void link(NODE* p,NODE* q)
{
NODE* r;
while(p!=NULL&&q!=NULL)
{
r=p->next;
p->next=q;
p=r;
r=q->next;
if(p!=NULL)
q->next=p;
q=r;
}
}
void link(NODE* p,NODE* q)
{
NODE* r;
while(p!=NULL&&q!=NULL)
{
r=p->next;
p->next=q;
p=r;
r=q->next;
if(p!=NULL)
q->next=p;
q=r;
}
}
呵呵,多谢改进,那是我老早以前写的了,现在翻出来的,其实3个指针是够了,但是貌似你忘记了A表,B表不等长时对余出部分的处理,还有我的那个43题多项式的乘法我觉得运算后应该检查合并同类项的我没有做,我要走了,最后一灌,11点左右的车,88!
呵呵,多谢改进,那是我老早以前写的了,现在翻出来的,其实3个指针是够了,但是貌似你忘记了A表,B表不等长时对余出部分的处理,还有我的那个43题多项式的乘法我觉得运算后应该检查合并同类项的我没有做,我要走了,最后一灌,11点左右的车,88!
已经作了处理
这个嘛...多种原因..
1. 我找到的这份习题就只有NOI的...
2. 考虑到有不少朋友都是才接触C++不久(半年,1年多?).....不要搞那么难
3. 考虑到有不少朋友平时学业, 工作都很忙..没有多少时间.不要搞那么难
4. 考虑到NOI的题比较具体形象..难度又不算太高..开发智力练习编程正好...
欢迎整理一份ACM的题目出来..大家研究研究