﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-ACM___________________________-随笔分类-ACM ( 组合 )</title><link>http://www.cppblog.com/MiYu/category/14445.html</link><description>                             ______________白白の屋</description><language>zh-cn</language><lastBuildDate>Sat, 18 Sep 2010 00:05:42 GMT</lastBuildDate><pubDate>Sat, 18 Sep 2010 00:05:42 GMT</pubDate><ttl>60</ttl><item><title>HDOJ 2147 HDU 2147 kiki's game ACM 2147 IN HDU </title><link>http://www.cppblog.com/MiYu/archive/2010/08/10/122978.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Tue, 10 Aug 2010 12:48:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/10/122978.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122978.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/10/122978.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122978.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122978.html</trackback:ping><description><![CDATA[<span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br><br>题目地址:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=2147">http://acm.hdu.edu.cn/showproblem.php?pid=2147</a><br>题目描述:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">kiki</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">s&nbsp;game</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000"><br>Time&nbsp;Limit:&nbsp;</span><span style="COLOR: #000000">5000</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">&nbsp;MS&nbsp;(Java</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">Others)&nbsp;&nbsp;&nbsp;&nbsp;Memory&nbsp;Limit:&nbsp;</span><span style="COLOR: #000000">40000</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">&nbsp;K&nbsp;(Java</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">Others)<br>Total&nbsp;Submission(s):&nbsp;</span><span style="COLOR: #000000">1806</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Accepted&nbsp;Submission(s):&nbsp;</span><span style="COLOR: #000000">1055</span><span style="COLOR: #000000"><br><br><br>Problem&nbsp;Description<br>Recently&nbsp;kiki&nbsp;has&nbsp;nothing&nbsp;to&nbsp;</span><span style="COLOR: #0000ff">do</span><span style="COLOR: #000000">.&nbsp;While&nbsp;she&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;bored,&nbsp;an&nbsp;idea&nbsp;appears&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;his&nbsp;mind,&nbsp;she&nbsp;just&nbsp;playes&nbsp;the&nbsp;checkerboard&nbsp;game.The&nbsp;size&nbsp;of&nbsp;the&nbsp;chesserboard&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;n</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">m.First&nbsp;of&nbsp;all,&nbsp;a&nbsp;coin&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;placed&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;the&nbsp;top&nbsp;right&nbsp;corner(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,m).&nbsp;Each&nbsp;time&nbsp;one&nbsp;people&nbsp;can&nbsp;move&nbsp;the&nbsp;coin&nbsp;into&nbsp;the&nbsp;left,&nbsp;the&nbsp;underneath&nbsp;or&nbsp;the&nbsp;left</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">underneath&nbsp;blank&nbsp;space.The&nbsp;person&nbsp;who&nbsp;can</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">t&nbsp;make&nbsp;a&nbsp;move&nbsp;will&nbsp;lose&nbsp;the&nbsp;game.&nbsp;kiki&nbsp;plays&nbsp;it&nbsp;with&nbsp;ZZ.The&nbsp;game&nbsp;always&nbsp;starts&nbsp;with&nbsp;kiki.&nbsp;If&nbsp;both&nbsp;play&nbsp;perfectly,&nbsp;who&nbsp;will&nbsp;win&nbsp;the&nbsp;game?</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">&nbsp;<br><br>Input<br>Input&nbsp;contains&nbsp;multiple&nbsp;test&nbsp;cases.&nbsp;Each&nbsp;line&nbsp;contains&nbsp;two&nbsp;integer&nbsp;n,&nbsp;m&nbsp;(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">n,m</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">2000</span><span style="COLOR: #000000">).&nbsp;The&nbsp;input&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;terminated&nbsp;when&nbsp;n</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;and&nbsp;m</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">.<br><br>&nbsp;<br><br>Output<br>If&nbsp;kiki&nbsp;wins&nbsp;the&nbsp;game&nbsp;printf&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Wonderful!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">What&nbsp;a&nbsp;pity!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">.<br>&nbsp;<br><br>Sample&nbsp;Input<br></span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Sample&nbsp;Output<br>What&nbsp;a&nbsp;pity</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br>Wonderful</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br>Wonderful</span><span style="COLOR: #000000">!</span></div>
<br>题目分析:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 12pt; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px">一直WA , 分析也没分析出来 , 百度了一下别人的解题报告后.............我承认....我被征服了.....................<br><br>分析如下:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="TEXT-ALIGN: center; WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 'Times New Roman'; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 22px; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: rgb(55,42,24); FONT-SIZE: 14px" class=Apple-style-span>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">P点：就是P个石子的时候，对方拿可以赢(自己输的)</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">N点：就是N个石子的时候，自己拿可以赢</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">现在关于P,N的求解有三个规则</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">（1）：最终态都是P</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">（2）：按照游戏规则，到达当前态的前态都是N的话，当前态是P</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">（3）：按照游戏规则，到达当前态的前态至少有一个P的话，当前态是N</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">题意：</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">在一个m*n的棋盘内，从(1,m)点出发，每次可以进行的移动是：左移一，下移一，左下移一。然后kiki每次先走，判断kiki时候会赢（对方无路可走的时候）。</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">我们可以把PN状态的点描绘出来：：</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border=0 src="http://www.cppblog.com/images/cppblog_com/miyu/3422454241826536201.jpg"><br><br><span style="TEXT-ALIGN: center; WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 'Times New Roman'; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 22px; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: rgb(55,42,24); FONT-SIZE: 14px" class=Apple-style-span></p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">这些点的描绘有一个程序：：</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">【</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">#include&lt;iostream&gt;<br style="LINE-HEIGHT: 22px">using namespace std;<br style="LINE-HEIGHT: 22px">bool map[2001][2001];//1 P 0 N;<br style="LINE-HEIGHT: 22px">int main(){<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i,j,k;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map[1][1]=1;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=2;i&lt;=2000;i++)<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(map[i-1][1])<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map[i][1]=0;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else map[i][1]=1;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=2;j&lt;i;j++){<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!map[i][j-1]&amp;&amp;!map[i-1][j-1]&amp;&amp;!map[i-1][j])<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map[i][j]=1;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else map[i][j]=0;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(map[1][i-1])<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map[1][i]=0;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else map[1][i]=1;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=2;j&lt;i;j++){<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!map[j-1][i]&amp;&amp;!map[j-1][i-1]&amp;&amp;!map[j][i-1])<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map[j][i]=1;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else map[j][i]=0;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!map[i][i-1]&amp;&amp;!map[i-1][i-1]&amp;&amp;!map[i-1][i])<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map[i][i]=1;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else map[i][i]=0;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int M,N;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=1;i&lt;=10;i++){<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=1;j&lt;=10;j++)<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%c ",map[i][j]?'P':'N');<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("\n");<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(scanf("%d%d",&amp;M,&amp;N)&amp;&amp;M&amp;&amp;N){<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(map[M][N]) printf("What a pity!\n");<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else printf("Wonderful!\n");<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br style="LINE-HEIGHT: 22px">}</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">】</p>
</span></span></span></span></div>
<br>具体代码如下:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n,m;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;cin&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;n&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;m&nbsp;,&nbsp;n&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;(&nbsp;n</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;m&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">What&nbsp;a&nbsp;pity!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Wonderful!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;<br>}<br></span></div>
</span>
<img src ="http://www.cppblog.com/MiYu/aggbug/122978.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-10 20:48 <a href="http://www.cppblog.com/MiYu/archive/2010/08/10/122978.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ HDU 2149 Public Sale  ACM 2149 IN HDU </title><link>http://www.cppblog.com/MiYu/archive/2010/08/09/122863.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Mon, 09 Aug 2010 14:22:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/09/122863.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122863.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/09/122863.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122863.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122863.html</trackback:ping><description><![CDATA[<span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br><br>题目地址:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=2149">http://acm.hdu.edu.cn/showproblem.php?pid=2149</a><br>题目描述:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">Public&nbsp;Sale<br><br>Time&nbsp;Limit:&nbsp;</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">&nbsp;MS&nbsp;(Java</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">Others)&nbsp;&nbsp;&nbsp;&nbsp;Memory&nbsp;Limit:&nbsp;</span><span style="COLOR: #000000">32768</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">32768</span><span style="COLOR: #000000">&nbsp;K&nbsp;(Java</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">Others)<br>Total&nbsp;Submission(s):&nbsp;</span><span style="COLOR: #000000">719</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Accepted&nbsp;Submission(s):&nbsp;</span><span style="COLOR: #000000">419</span><span style="COLOR: #000000"><br><br><br>Problem&nbsp;Description<br>虽然不想，但是现实总归是现实，Lele始终没有逃过退学的命运，因为他没有拿到奖学金。现在等待他的，就是像FarmJohn一样的农田生涯。<br><br>要种田得有田才行，Lele听说街上正在举行一场别开生面的拍卖会，拍卖的物品正好就是一块20亩的田地。于是，Lele带上他的全部积蓄，冲往拍卖会。<br><br>后来发现，整个拍卖会只有Lele和他的死对头Yueyue。<br><br>通过打听，Lele知道这场拍卖的规则是这样的：刚开始底价为0，两个人轮流开始加价，不过每次加价的幅度要在1～N之间，当价格大于或等于田地的成本价&nbsp;M&nbsp;时，主办方就把这块田地卖给这次叫价的人。<br><br>Lele和Yueyue虽然考试不行，但是对拍卖却十分精通，而且他们两个人都十分想得到这块田地。所以他们每次都是选对自己最有利的方式进行加价。<br><br>由于Lele字典序比Yueyue靠前，所以每次都是由Lele先开始加价，请问，第一次加价的时候，<br>Lele要出多少才能保证自己买得到这块地呢？<br>&nbsp;<br><br>Input<br>本题目包含多组测试，请处理到文件结束(EOF)。每组测试占一行。<br>每组测试包含两个整数M和N(含义见题目描述，</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">N，M</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">1100</span><span style="COLOR: #000000">)<br>&nbsp;<br><br>Output<br>对于每组数据，在一行里按递增的顺序输出Lele第一次可以加的价。两个数据之间用空格隔开。<br>如果Lele在第一次无论如何出价都无法买到这块土地，就输出</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">none</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">。<br>&nbsp;<br><br>Sample&nbsp;Input<br></span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Sample&nbsp;Output<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"><br>none<br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">5</span></div>
<br>题目分析:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px">简单的Bash 博弈. 按题意控制好 输出 就行了 ,&nbsp;&nbsp;&nbsp; 不清楚请点击<a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122753.html">&nbsp; 博弈入门</a> </div>
</span><br>代码如下:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a></span><br><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n,m;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;scanf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">m,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">n&nbsp;)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;EOF&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;m&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;(&nbsp;n&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;)&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">none</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;n&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;m&nbsp;)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;n;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;i&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;(&nbsp;i&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;m&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,i&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putchar&nbsp;(&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\n</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;m&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;(&nbsp;n&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;)&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;<br>}<br></span></div>
<img src ="http://www.cppblog.com/MiYu/aggbug/122863.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-09 22:22 <a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122863.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ HDU 2188 悼念512汶川大地震遇难同胞——选拔志愿者 ACM 2188 IN HDU </title><link>http://www.cppblog.com/MiYu/archive/2010/08/09/122851.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Mon, 09 Aug 2010 13:37:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/09/122851.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122851.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/09/122851.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122851.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122851.html</trackback:ping><description><![CDATA[<span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br><br>题目地址:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=2188">http://acm.hdu.edu.cn/showproblem.php?pid=2188</a><br>题目描述:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">悼念512汶川大地震遇难同胞——选拔志愿者<br><br>Time&nbsp;Limit:&nbsp;</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">&nbsp;MS&nbsp;(Java</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">Others)&nbsp;&nbsp;&nbsp;&nbsp;Memory&nbsp;Limit:&nbsp;</span><span style="COLOR: #000000">32768</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">32768</span><span style="COLOR: #000000">&nbsp;K&nbsp;(Java</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">Others)<br>Total&nbsp;Submission(s):&nbsp;</span><span style="COLOR: #000000">1337</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Accepted&nbsp;Submission(s):&nbsp;</span><span style="COLOR: #000000">716</span><span style="COLOR: #000000"><br><br><br>Problem&nbsp;Description<br>对于四川同胞遭受的灾难，全国人民纷纷伸出援助之手，几乎每个省市都派出了大量的救援人员，这其中包括抢险救灾的武警部队，治疗和防疫的医护人员，以及进行心理疏导的心理学专家。根据要求，我校也有一个奔赴灾区救灾的名额，由于广大师生报名踊跃，学校不得不进行选拔来决定最后的人选。经过多轮的考核，形势逐渐明朗，最后的名额将在&#8220;林队&#8221;和&#8220;徐队&#8221;之间产生。但是很巧合，2个人的简历几乎一模一样，这让主持选拔的8600很是为难。无奈，他决定通过捐款来决定两人谁能入选。<br>选拔规则如下：<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">、最初的捐款箱是空的；<br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">、两人轮流捐款，每次捐款额必须为正整数，并且每人每次捐款最多不超过m元(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">m</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">)。<br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">、最先使得总捐款额达到或者超过n元（</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">10000</span><span style="COLOR: #000000">）的一方为胜者，则其可以亲赴灾区服务。<br>我们知道，两人都很想入选志愿者名单，并且都是非常聪明的人，假设林队先捐，请你判断谁能入选最后的名单？<br>&nbsp;<br><br>Input<br>输入数据首先包含一个正整数C，表示包含C组测试用例，然后是C行数据，每行包含两个正整数n，m，n和m的含义参见上面提到的规则。<br>&nbsp;<br><br>Output<br>对于每组测试数据，如果林队能入选，请输出字符串</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Grass</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">，&nbsp;如果徐队能入选，请输出字符串</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Rabbit</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">，每个实例的输出占一行。<br>&nbsp;<br><br>Sample&nbsp;Input<br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Sample&nbsp;Output<br>Grass<br>Rabbit<br></span></div>
<br><br>题目分析:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px">非常非常标准的 bash 博弈, 只要把 捐款看成取款就行了, 谁最后取光钱谁就赢.&nbsp; 更多资料请点击&nbsp; <a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122753.html">博弈入门</a></div>
</span><br>代码如下:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a></span><br><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;T;<br>&nbsp;&nbsp;&nbsp;&nbsp;scanf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">T&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;T&nbsp;</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n,m;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">n,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">m&nbsp;);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;(&nbsp;n&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m&nbsp;)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Grass</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Rabbit</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;);&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;<br>}<br></span></div>
<img src ="http://www.cppblog.com/MiYu/aggbug/122851.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-09 21:37 <a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122851.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ HDU 1847 Good Luck in CET-4 Everybody! ACM 1847 IN HDU </title><link>http://www.cppblog.com/MiYu/archive/2010/08/09/122845.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Mon, 09 Aug 2010 13:27:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/09/122845.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122845.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/09/122845.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122845.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122845.html</trackback:ping><description><![CDATA[<span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 'Times New Roman'; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 21px; FONT-FAMILY: simsun; COLOR: rgb(70,70,70); FONT-SIZE: 14px" class=Apple-style-span><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br></span><br>题目地址:<br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=1847">http://acm.hdu.edu.cn/showproblem.php?pid=1847</a><br>题目描述:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">Problem&nbsp;Description<br>大学英语四级考试就要来临了，你是不是在紧张的复习？也许紧张得连短学期的ACM都没工夫练习了，反正我知道的Kiki和Cici都是如此。当然，作为在考场浸润了十几载的当代大学生，Kiki和Cici更懂得考前的放松，所谓&#8220;张弛有道&#8221;就是这个意思。这不，Kiki和Cici在每天晚上休息之前都要玩一会儿扑克牌以放松神经。<br>&#8220;升级&#8221;？&#8220;双扣&#8221;？&#8220;红五&#8221;？还是&#8220;斗地主&#8221;？<br>当然都不是！那多俗啊</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000"><br>作为计算机学院的学生，Kiki和Cici打牌的时候可没忘记专业，她们打牌的规则是这样的：<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">、&nbsp;&nbsp;总共n张牌;<br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">、&nbsp;&nbsp;双方轮流抓牌；<br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">、&nbsp;&nbsp;每人每次抓牌的个数只能是2的幂次（即：</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">，</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">，</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">，</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">，</span><span style="COLOR: #000000">16</span><span style="COLOR: #000000">&#8230;）<br></span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">、&nbsp;&nbsp;抓完牌，胜负结果也出来了：最后抓完牌的人为胜者；<br>假设Kiki和Cici都是足够聪明（其实不用假设，哪有不聪明的学生</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">），并且每次都是Kiki先抓牌，请问谁能赢呢？<br>当然，打牌无论谁赢都问题不大，重要的是马上到来的CET</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">4能有好的状态。<br><br>Good&nbsp;luck&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;CET</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">&nbsp;everybody</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Input<br>输入数据包含多个测试用例，每个测试用例占一行，包含一个整数n（</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">）。<br>&nbsp;<br><br>Output<br>如果Kiki能赢的话，请输出&#8220;Kiki&#8221;，否则请输出&#8220;Cici&#8221;，每个实例的输出占一行。<br>&nbsp;<br><br>Sample&nbsp;Input<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Sample&nbsp;Output<br>Kiki<br>Cici</span></div>
<br>题目分析:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a></span><br><br>首先我们可以想到在面对3的时候是必败局，谁面对3时无论拿多少都会败 !&nbsp;&nbsp;&lt;---这是关键<br>那么就要尽量造成这样的局势给对方，因为任何不是3的倍数的数加1或2都可以变成3的倍数，<br>同理减去1或2也可以变成3的倍数，也就是说假设目前的个数不是3的倍数，那我肯定能把它<br>拿成3的倍数，比如现在是11个，那我拿走2个就变成9，这样就造成对方为3的倍数局势，那<br>么对方拿m个我都可以通过拿1或者2使总共一轮拿的数目成为3的倍数，这样就会有两种情况:<br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;1</span><span style="COLOR: #000000">.刚好拿完.<br>&nbsp;&nbsp;&nbsp;2.剩下的还有3的倍数个，那继续;<br>所以这样拿下去必胜</span></div>
<br>代码如下:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a></span><br><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;N;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;cin&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;N&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;(&nbsp;N&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Kiki</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Cici</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;<br>}<br></span></div>
</span></span>
<img src ="http://www.cppblog.com/MiYu/aggbug/122845.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-09 21:27 <a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122845.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ HDU 1849 Rabbit and Grass ACM 1849 IN HDU </title><link>http://www.cppblog.com/MiYu/archive/2010/08/09/122844.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Mon, 09 Aug 2010 13:09:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/09/122844.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122844.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/09/122844.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122844.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122844.html</trackback:ping><description><![CDATA[<span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br><br>题目地址:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=1849">http://acm.hdu.edu.cn/showproblem.php?pid=1849</a><br>题目描述:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">Problem&nbsp;Description<br>大学时光是浪漫的，女生是浪漫的，圣诞更是浪漫的，但是Rabbit和Grass这两个大学女生在今年的圣诞节却表现得一点都不浪漫：不去逛商场，不去逛公园，不去和AC男约会，两个人竟然猫在寝食下棋&#8230;&#8230;<br>说是下棋，其实只是一个简单的小游戏而已，游戏的规则是这样的：<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">、&nbsp;&nbsp;棋盘包含1</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">n个方格，方格从左到右分别编号为0，</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">，</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">，&#8230;，n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">；<br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">、&nbsp;&nbsp;m个棋子放在棋盘的方格上，方格可以为空，也可以放多于一个的棋子；<br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">、&nbsp;&nbsp;双方轮流走棋；<br></span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">、&nbsp;&nbsp;每一步可以选择任意一个棋子向左移动到任意的位置（可以多个棋子位于同一个方格），当然，任何棋子不能超出棋盘边界；<br></span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">、&nbsp;&nbsp;如果所有的棋子都位于最左边（即编号为0的位置），则游戏结束，并且规定最后走棋的一方为胜者。<br><br>对于本题，你不需要考虑n的大小（我们可以假设在初始状态，棋子总是位于棋盘的适当位置）。下面的示意图即为一个1</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">15的棋盘，共有6个棋子，其中，编号8的位置有两个棋子。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border=0 src="http://www.cppblog.com/images/cppblog_com/miyu/C101-1004-1.jpg"><br><br><br>大家知道，虽然偶尔不够浪漫，但是Rabbit和Grass都是冰雪聪明的女生，如果每次都是Rabbit先走棋，请输出最后的结果。<br>&nbsp;<br><br>Input<br>输入数据包含多组测试用例，每个测试用例占二行，首先一行包含一个整数m（</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">m</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">），表示本测试用例的棋子数目，紧跟着的一行包含m个整数Ki(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&#8230;m;&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">Ki</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">)，分别表示m个棋子初始的位置，m</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0则结束输入。<br>&nbsp;<br><br>Output<br>如果Rabbit能赢的话，请输出&#8220;Rabbit&nbsp;Win</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&#8221;，否则请输出&#8220;Grass&nbsp;Win</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&#8221;，每个实例的输出占一行。<br>&nbsp;<br><br>Sample&nbsp;Input<br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Sample&nbsp;Output<br>Rabbit&nbsp;Win</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br>Grass&nbsp;Win</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br></span></div>
<br>题目分析 :<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br><br>标准 的 nim 博弈 问题, 不要想复杂了 .&nbsp;&nbsp; 因为只能往左移, 所以可以将 初始的每个棋子的位置看成一个堆, 比如说, 1个棋子在 n-1格, 那么就代表这个堆有 n-1个数<br>左移1格,就是取走一个, 所以有 m 棋子就代表有m个堆, 全部到0就是取完了............&nbsp;&nbsp;&nbsp; 更具体的 nim 博弈介绍请点击&nbsp; &lt;&lt;&nbsp;<a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122753.html">博弈入门</a>&nbsp;&gt;&gt;&nbsp; </span></div>
<br>代码如下:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a></span><br><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;heap[</span><span style="COLOR: #000000">1001</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;T;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;scanf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">T&nbsp;),&nbsp;T&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;res&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;,&nbsp;nCount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;T;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;i&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,heap&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;i&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res&nbsp;</span><span style="COLOR: #000000">^=</span><span style="COLOR: #000000">&nbsp;heap[i];&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;(&nbsp;res&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Grass&nbsp;Win!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Rabbit&nbsp;Win!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;<br>}<br></span></div>
</span>
<img src ="http://www.cppblog.com/MiYu/aggbug/122844.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-09 21:09 <a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122844.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ HDU 1846 Brave Game ACM 1846 IN HDU </title><link>http://www.cppblog.com/MiYu/archive/2010/08/09/122836.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Mon, 09 Aug 2010 12:35:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/09/122836.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122836.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/09/122836.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122836.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122836.html</trackback:ping><description><![CDATA[<span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br><br>题目地址:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=1846">http://acm.hdu.edu.cn/showproblem.php?pid=1846</a><br>题目描述:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">Problem&nbsp;Description<br>十年前读大学的时候，中国每年都要从国外引进一些电影大片，其中有一部电影就叫《勇敢者的游戏》（英文名称：Zathura），一直到现在，我依然对于电影中的部分电脑特技印象深刻。<br>今天，大家选择上机考试，就是一种勇敢（brave）的选择；这个短学期，我们讲的是博弈（game）专题；所以，大家现在玩的也是&#8220;勇敢者的游戏&#8221;，这也是我命名这个题目的原因。<br>当然，除了&#8220;勇敢&#8221;，我还希望看到&#8220;诚信&#8221;，无论考试成绩如何，希望看到的都是一个真实的结果，我也相信大家一定能做到的</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000"><br><br>各位勇敢者要玩的第一个游戏是什么呢？很简单，它是这样定义的：<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">、&nbsp;&nbsp;本游戏是一个二人游戏;<br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">、&nbsp;&nbsp;有一堆石子一共有n个；<br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">、&nbsp;&nbsp;两人轮流进行;<br></span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">、&nbsp;&nbsp;每走一步可以取走1&#8230;m个石子；<br></span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">、&nbsp;&nbsp;最先取光石子的一方为胜；<br><br>如果游戏的双方使用的都是最优策略，请输出哪个人能赢。<br>&nbsp;<br><br>Input<br>输入数据首先包含一个正整数C(C</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">)，表示有C组测试数据。<br>每组测试数据占一行，包含两个整数n和m（</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">n,m</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">），n和m的含义见题目描述。<br>&nbsp;<br><br>Output<br>如果先走的人能赢，请输出&#8220;first&#8221;，否则请输出&#8220;second&#8221;，每个实例的输出占一行。<br>&nbsp;<br><br>Sample&nbsp;Input<br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">23</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Sample&nbsp;Output<br>first<br>second<br></span></div>
<br>题目分析:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 'Times New Roman'; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 21px; FONT-FAMILY: simsun; COLOR: rgb(70,70,70); FONT-SIZE: 14px" class=Apple-style-span>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 21px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 0px 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: normal; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; WORD-BREAK: normal; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px">巴什博弈，一个人拿1～m个，那谁面对m+1的局势的的时候则必败，很明显，先拿的就是要造这个局势,如果n是(m+1)*r+s(k为任意，s&lt;m+1),那么很明显先拿的拿掉s后，然后无论下一个拿多少你都可以保证你拿完后都是拿了m+1个，这样后拿的必定面对必败局势，比如23 2，23=（3&#215;7）+2；那我第一次拿掉2，然后无论每次第二个拿几我都可以使得这轮总共拿3，然后他必定会面对3这个局势，然后我就必胜，那什么时候必败呢，很明显如果我面对的是（m+1）的倍数的局势就必败。<br>puts ( n % ( 1 + m ) != 0 ? "first" : "second" );</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 21px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 0px 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: normal; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; WORD-BREAK: normal; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px">结果竟然被这题给阴了....while(scanf("%d",&amp;c)!=EOF) --&gt; 结果WA, YM<br>然后改成&nbsp; scanf("%d",&amp;c)&nbsp; 居然 AC 了. ...................悲剧～～～</p>
</span></span></div>
<br>代码如下 :<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br><br>#include &lt;iostream&gt;<br>int main ()<br>{<br>&nbsp;&nbsp;&nbsp; int T;<br>&nbsp;&nbsp;&nbsp; scanf ( "%d",&amp;T );<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ( T -- )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int n,m;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf ( "%d%d", &amp;n, &amp;m ); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; puts ( n % ( 1 + m ) != 0 ? "first" : "second" );&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return 0; <br>}<br></span></div>
</span>
<img src ="http://www.cppblog.com/MiYu/aggbug/122836.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-09 20:35 <a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122836.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ HDU 1850 Being a Good Boy in Spring Festival ACM 1850 IN HDU </title><link>http://www.cppblog.com/MiYu/archive/2010/08/09/122830.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Mon, 09 Aug 2010 12:04:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/09/122830.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122830.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/09/122830.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122830.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122830.html</trackback:ping><description><![CDATA[<span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br><br>题目地址:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=1850">http://acm.hdu.edu.cn/showproblem.php?pid=1850</a><br>题目描述:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">Problem&nbsp;Description<br>一年在外&nbsp;父母时刻牵挂<br>春节回家&nbsp;你能做几天好孩子吗<br>寒假里尝试做做下面的事情吧<br><br>陪妈妈逛一次菜场<br>悄悄给爸爸买个小礼物<br>主动地&nbsp;强烈地&nbsp;要求洗一次碗<br>某一天早起&nbsp;给爸妈用心地做回早餐<br><br>如果愿意&nbsp;你还可以和爸妈说<br>咱们玩个小游戏吧&nbsp;ACM课上学的呢～<br><br>下面是一个二人小游戏：桌子上有M堆扑克牌；每堆牌的数量分别为Ni(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&#8230;M)；两人轮流进行；每走一步可以任意选择一堆并取走其中的任意张牌；桌子上的扑克全部取光，则游戏结束；最后一次取牌的人为胜者。<br>现在我们不想研究到底先手为胜还是为负，我只想问大家：<br>——&#8220;先手的人如果想赢，第一步有几种选择呢？&#8221;<br>&nbsp;<br><br>Input<br>输入数据包含多个测试用例，每个测试用例占2行，首先一行包含一个整数M(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">M</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">)，表示扑克牌的堆数，紧接着一行包含M个整数Ni(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">Ni</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">1000000</span><span style="COLOR: #000000">，i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&#8230;M)，分别表示M堆扑克的数量。M为0则表示输入数据的结束。<br>&nbsp;<br><br>Output<br>如果先手的人能赢，请输出他第一步可行的方案数，否则请输出0，每个实例的输出占一行。<br>&nbsp;<br><br>Sample&nbsp;Input<br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Sample&nbsp;Output<br></span><span style="COLOR: #000000">1</span></div>
<br>题目分析 :<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 'Times New Roman'; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 21px; FONT-FAMILY: verdana, 'ms song', 宋体, Arial, 微软雅黑, Helvetica, sans-serif; FONT-SIZE: 14px" class=Apple-style-span>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a></span><br><br>一.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果<span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 'Times New Roman'; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 21px; FONT-FAMILY: verdana, 'ms song', 宋体, Arial, 微软雅黑, Helvetica, sans-serif; FONT-SIZE: 14px" class=Apple-style-span>a1^a2^a3^...^an=0 ( 即 : nim-sum=0 ) , 说明先手没有必赢策略, 方法数肯定为 0;<br>二.</span></span></p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;假设先手的人有必赢策略。</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;问题则转化为=&gt;在任意一堆拿任意K张牌，并且剩下所有堆的nim-sum=0(P-position)的方案总数。</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;现在我们先看一个例子(5,7,9)，并假设从第一堆取任意K张牌。</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;排除第一堆牌的nim-sum为 7^9=14</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0111</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^1001</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1110</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果要使所有堆的nim-sum=0成立，则第一堆取掉K张以后必定为1110，因为X^X=0。</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所以要观察 5-k=14 k&gt;0 成立,此例子(在第一堆取任意K张牌)明显的不成立。但并不代表在第二或第三堆取任意K张牌的解不成立。</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;现在看第二个例子(15,7,9)，并假设从第一堆取任意K张牌。</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;排队第一堆牌的nim-sum为7^9=14，和第一个例子相同，所以问题变为观察 15-k=14 k&gt;0 是否成立。</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当然这个例子是成立的。</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">三.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;总结得出：</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在任意一堆拿任意K张牌，并且所有堆的nim-sum=0 成立的条件为：排除取掉K张牌的那一堆的nim-sum必须少于该堆牌上的数量(例子二)，否则不能在此堆上取任意K张牌使所有堆的nim-sum=0成立(例子一)。</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;故总方案数为 ( 在任意一堆拿任意K张牌，并且所有堆的nim-sum=0 成立 ) 的总数。</p>
</span></span></div>
<br>代码如下 :<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a></span><br><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;heap[</span><span style="COLOR: #000000">101</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;T;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;scanf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">T&nbsp;),&nbsp;T&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;res&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;,&nbsp;nCount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;T;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;i&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,heap&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;i&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res&nbsp;</span><span style="COLOR: #000000">^=</span><span style="COLOR: #000000">&nbsp;heap[i];&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;res&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">continue</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;cmp&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;T;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;i&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;res&nbsp;</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">&nbsp;heap[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;cmp&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;heap[i]&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nCount&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,nCount&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;<br>}<br></span></div>
</span>
<img src ="http://www.cppblog.com/MiYu/aggbug/122830.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-09 20:04 <a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122830.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ HDU 2897 邂逅明下 ACM 2897 IN HDU </title><link>http://www.cppblog.com/MiYu/archive/2010/08/09/122756.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Mon, 09 Aug 2010 03:59:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/09/122756.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122756.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/09/122756.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122756.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122756.html</trackback:ping><description><![CDATA[<span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br><br>题目地址:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=2897">http://acm.hdu.edu.cn/showproblem.php?pid=2897</a><br>题目描述:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">Problem&nbsp;Description<br>当日遇到月，于是有了明。当我遇到了你，便成了侣。<br>那天，日月相会，我见到了你。而且，大地失去了光辉，你我是否成侣？这注定是个凄美的故事。（以上是废话）<br>小t和所有世俗的人们一样，期待那百年难遇的日食。驻足街头看天，看日月渐渐走近，小t的脖子那个酸呀（他坚持这个姿势已经有半个多小时啦）。他低下仰起的头，环顾四周。忽然发现身边竟站着位漂亮的mm。天渐渐暗下，这mm在这街头竟然如此耀眼，她是天使吗？站着小t身边的天使。<br>小t对mm惊呼：&#8220;缘分呐</span><span style="COLOR: #000000">~~</span><span style="COLOR: #000000">&#8221;。mm却毫不含糊：&#8220;是啊，500年一遇哦！&#8221;（此后省略5000字&#8230;.）<br>小t赶紧向mm要联系方式，可mm说：&#8220;我和你玩个游戏吧，赢了，我就把我的手机号告诉你。&#8221;小t，心想天下哪有题目能难倒我呢，便满口答应下来。mm开始说游戏规则：&#8220;我有一堆硬币，一共7枚，从这个硬币堆里取硬币，一次最少取2枚，最多4枚，如果剩下少于2枚就要一次取完。我和你轮流取，直到堆里的硬币取完，最后一次取硬币的算输。我玩过这个游戏好多次了，就让让你，让你先取吧</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">&#8221;<br>小t掐指一算，不对呀，这是不可能的任务么。小t露出得意的笑：&#8220;还是mm优先啦，呵呵</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">&#8221;mm霎时愣住了，想是对小t的反应出乎意料吧。<br>她却也不生气：&#8220;好小子，挺聪明呢，要不这样吧，你把我的邮箱给我，我给你发个文本，每行有三个数字n，p，q，表示一堆硬币一共有n枚，从这个硬币堆里取硬币，一次最少取p枚，最多q枚，如果剩下少于p枚就要一次取完。两人轮流取，直到堆里的硬币取完，最后一次取硬币的算输。对于每一行的三个数字，给出先取的人是否有必胜策略，如果有回答WIN，否则回答LOST。你把对应的答案发给我，如果你能在今天晚上8点以前发给我正确答案，或许我们明天下午可以再见。&#8221;<br>小t二话没说，将自己的邮箱给了mm。当他兴冲冲得赶回家，上网看邮箱，哇！mm的邮件已经到了。他发现文本长达100000行，每行的三个数字都很大，但是都是不超过65536的整数。小t看表已经下午6点了，要想手工算出所有结果，看来是不可能了。你能帮帮他，让他再见到那个mm吗？<br>&nbsp;<br><br>Input<br>不超过100000行，每行三个正整数n，p，q。<br>&nbsp;<br><br>Output<br>对应每行输入，按前面介绍的游戏规则，判断先取者是否有必胜策略。输出WIN或者LOST。<br>&nbsp;<br><br>Sample&nbsp;Input<br></span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Sample&nbsp;Output<br>LOST<br>WIN<br></span></div>
<br><br>博弈的入门题, <span><span>巴什博奕</span></span><span><span>(Bash Game), 具体了解请点击&nbsp;&nbsp;<a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122753.html">博弈入门</a>&nbsp; .<br><br>代码如下:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a></span><br><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;N,&nbsp;p,&nbsp;q;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;scanf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d%d%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">N,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">p,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">q&nbsp;)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;EOF&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;res&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;N&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;(&nbsp;p&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;q&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;(&nbsp;res&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;res&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;p&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">LOST</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">WIN</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">WIN</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;<br>}<br></span></div>
<br>另外秀秀自己的一行代码 :<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a></span></span><br><br>main(p,q){</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;N,res;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d%d%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">N,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">p,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">q)){res</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">N</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">(p</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">q);puts(res</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">res</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">LOST</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">WIN</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">WIN</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);}}</span></div>
</span></span></span>
<img src ="http://www.cppblog.com/MiYu/aggbug/122756.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-09 11:59 <a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122756.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>博弈 入门 ( ACM 博弈 组合 )</title><link>http://www.cppblog.com/MiYu/archive/2010/08/09/122753.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Mon, 09 Aug 2010 03:24:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/09/122753.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122753.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/09/122753.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122753.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122753.html</trackback:ping><description><![CDATA[
<p style="MARGIN: 0cm 0cm 0pt; mso-outline-level: 1" class="MsoNormal"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color="#1d58d1"><u>______________白白の屋</u></font></a></span><a name="_Toc228254142"><span style="COLOR: maroon"><br><br>寻找平衡状态（也称必败态，</span><span style="COLOR: maroon"> </span></a><span style="mso-bookmark: _Toc228254142"><span style="COLOR: maroon">奇异局势），（满足：任意非平衡态经过一次操作可以变为平衡态）</span></span></p>
<p style="MARGIN: 0cm 0cm 0pt; mso-outline-level: 1" class="MsoNormal"><span style="mso-bookmark: _Toc228254142"><span style="COLOR: maroon">(</span></span><span style="mso-bookmark: _Toc228254142"><span style="COLOR: maroon">一</span><span style="COLOR: maroon">)</span></span><span style="mso-bookmark: _Toc228254142"><span style="COLOR: maroon; FONT-SIZE: 14pt">巴什博奕</span></span><span style="mso-bookmark: _Toc228254142"><span style="COLOR: maroon; FONT-SIZE: 14pt; mso-bidi-font-size: 12.0pt">(Bash Game):</span></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class="MsoNormal"><span style="COLOR: blue">只有一堆</span><span style="COLOR: blue">n</span><span style="COLOR: blue">个物品</span><span style="COLOR: blue">,</span><span style="COLOR: blue">两个人轮流从这堆物品中取物</span><span style="COLOR: blue">,</span><span style="COLOR: blue">规定每次至少取一个</span><span style="COLOR: blue">,</span><span style="COLOR: blue">最多取</span><span style="COLOR: blue">m</span><span style="COLOR: blue">个</span><span style="COLOR: blue">.</span><span style="COLOR: blue">最后取光者得胜</span><span style="COLOR: blue">.</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span>n = (m+1)r+s , (r</span><span>为任意自然数</span><span>,s&#8804;m), </span><span>即</span><span>n%(m+1) != 0, </span><span>则先取者肯定获胜</span></p>
<p style="MARGIN: 0cm 0cm 0pt; mso-outline-level: 1" class="MsoNormal"><a name="_Toc228254143"><span style="COLOR: maroon">(</span></a><span style="mso-bookmark: _Toc228254143"><span style="COLOR: maroon">二</span><span style="COLOR: maroon">)</span></span><span style="mso-bookmark: _Toc228254143"><span style="COLOR: maroon; FONT-SIZE: 14pt">威佐夫博奕</span></span><span style="mso-bookmark: _Toc228254143"><span style="COLOR: maroon; FONT-SIZE: 14pt; mso-bidi-font-size: 12.0pt">(Wythoff Game):</span></span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; TEXT-ALIGN: justify; MARGIN: 0cm 0cm 0pt" class="MsoBodyTextIndent"><span style="COLOR: blue"><font face="宋体">有两堆各若干个物品</font></span><span style="COLOR: blue">,</span><span style="COLOR: blue"><font face="宋体">两个人轮流从某一堆或同时从两堆中取同样多的物品</font></span><span style="COLOR: blue">,</span><span style="COLOR: blue"><font face="宋体">规定每次至少取一个</font></span><span style="COLOR: blue">,</span><span style="COLOR: blue"><font face="宋体">多者不限</font></span><span style="COLOR: blue">,</span><span style="COLOR: blue"><font face="宋体">最后取光者得胜</font></span><span style="COLOR: blue">.</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span>(ak,bk)(ak &#8804; bk ,k=0,1,2,...,n)</span><span>表示<span style="COLOR: red">奇异局势</span></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="COLOR: red">求法：</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt 21pt" class="MsoNormal"><span>ak =[k(1+&#8730;5)/2], bk= ak + k (k=0,1,2,...,n </span><span>方括号表示取整函数</span><span>)</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="COLOR: red">判断：</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Gold=(1+sqrt(5.0))/2.0</span><span>；</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt 21pt" class="MsoNormal"><span>1</span><span>）假设（</span><span>a</span><span>，</span><span>b</span><span>）为第</span><span>k</span><span>种奇异局势</span><span>(k=0,1,2...) </span><span>那么</span><span>k=b-a;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt 21pt" class="MsoNormal"><span>2</span><span>）判断其</span><span>a==(int)(k*Gold),</span><span>相等则为奇异局势</span></p>
<p style="TEXT-INDENT: 10.5pt; MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="COLOR: #3366ff">（注：采用适当的方法</span><span style="COLOR: #3366ff">,</span><span style="COLOR: #3366ff">可以将非奇异局势变为奇异局势</span><span style="COLOR: #3366ff">.</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" class="MsoNormal"><span>假设面对的局势是</span><span>(a,b) </span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" class="MsoNormal"><span>若</span><span> b = a,</span><span>则同时从两堆中取走</span><span> a </span><span>个物体</span><span>,</span><span>就变为了奇异局势</span><span>(0,0)</span><span>；</span></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 39pt; mso-list: l0 level1 lfo1" class="MsoNormal"><span><span style="mso-list: Ignore">1.<span style="FONT: 7pt Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>如果</span><span>a = ak,</span></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 57pt; mso-list: l1 level2 lfo2" class="MsoNormal"><span><span style="mso-list: Ignore">1.1<span style="FONT: 7pt Times New Roman">&nbsp;&nbsp; </span></span></span><span>b &gt; bk, </span><span>那么</span><span>,</span><span>取走</span><span>b - bk</span><span>个物体</span><span>,</span><span>即变为奇异局势</span><span>(ak, bk)</span><span>；</span></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 57pt; mso-list: l1 level2 lfo2" class="MsoNormal"><span><span style="mso-list: Ignore">1.2<span style="FONT: 7pt Times New Roman">&nbsp;&nbsp; </span></span></span><span>b &lt; bk </span><span>则同时从两堆中拿走</span><span> ak &#8211; a[b &#8211; ak]</span><span>个物体</span><span>,</span><span>变为奇异局势</span><span>( a[b &#8211; ak] , a[b &#8211; ak]+ b - ak)</span><span>；</span></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 39pt; mso-para-margin-left: 2.0gd; mso-list: l1 level1 lfo2" class="MsoNormal"><span><span style="mso-list: Ignore">2<span style="FONT: 7pt Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>如果</span><span>a = bk ,</span></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 57pt; mso-list: l1 level2 lfo2" class="MsoNormal"><span><span style="mso-list: Ignore">2.1<span style="FONT: 7pt Times New Roman">&nbsp;&nbsp; </span></span></span><span>b &gt; ak ,</span><span>则从第二堆中拿走多余的数量</span><span>b &#8211; ak</span></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 57pt; mso-list: l1 level2 lfo2" class="MsoNormal"><span><span style="mso-list: Ignore">2.2<span style="FONT: 7pt Times New Roman">&nbsp;&nbsp; </span></span></span><span>b &lt; ak ,</span><span>则</span> <span>若</span><span>b = aj (j &lt; k)<span style="mso-spacerun: yes"> </span></span><span>从第一堆中拿走多余的数量</span><span>a&#8211; bj;<span style="mso-spacerun: yes"> </span>(a &gt; bj)</span></p>
<p style="TEXT-INDENT: 9pt; MARGIN: 0cm 0cm 0pt 96pt" class="MsoNormal"><span>若</span><span>b = bj (j &lt; k)<span style="mso-spacerun: yes"> </span></span><span>从第一堆中拿走多余的数量</span><span>a&#8211; aj;<span style="mso-spacerun: yes"> </span>( a &gt; aj)</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" class="MsoNormal"><span style="COLOR: #3366ff">）</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" class="MsoNormal"><span style="COLOR: #3366ff">例题：</span><span style="COLOR: #3366ff">pku 1067</span></p>
<p style="MARGIN: 0cm 0cm 0pt; mso-outline-level: 1" class="MsoNormal"><a name="_Toc228254145"><span style="COLOR: maroon">(</span></a><span style="mso-bookmark: _Toc228254145"><span style="COLOR: maroon">三</span><span style="COLOR: maroon">)</span></span><span style="mso-bookmark: _Toc228254145"><span style="COLOR: maroon; FONT-SIZE: 14pt">尼姆博奕</span></span><span style="mso-bookmark: _Toc228254145"><span style="COLOR: maroon; FONT-SIZE: 14pt; mso-bidi-font-size: 12.0pt">(Nimm Game):</span></span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; TEXT-ALIGN: justify; MARGIN: 0cm 0cm 0pt" class="MsoBodyTextIndent"><span style="COLOR: blue"><font face="宋体">有</font></span><span style="COLOR: blue">n</span><span style="COLOR: blue"><font face="宋体">堆各若干个物品</font></span><span style="COLOR: blue">,</span><span style="COLOR: blue"><font face="宋体">两个人轮流从某一堆取任意多的物品</font></span><span style="COLOR: blue">,</span><span style="COLOR: blue"><font face="宋体">规定每次至少取一个</font></span><span style="COLOR: blue">,</span><span style="COLOR: blue"><font face="宋体">多者不限</font></span><span style="COLOR: blue">,</span><span style="COLOR: blue"><font face="宋体">最后取光者得胜</font></span><span style="COLOR: blue">.</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span>任何<span style="COLOR: red">奇异局势</span></span><span>(a1, a2, &#8230; , an)</span><span>都有</span><span>a1(+)a2(+)&#8230;(+)an =0.<span style="mso-spacerun: yes"> </span>( (+)</span><span>为</span> <span>按位^</span><span>)<br><br><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 'Times New Roman'; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" ></span></span></p>
<p style="FONT-SIZE: 14pt">Nim游戏简介：</p>
<p style="FONT-SIZE: 14pt">（1）有两个玩家；</p>
<p style="FONT-SIZE: 14pt">（2）有三堆扑克牌（比如：可以分别是5，7，9张）；</p>
<p style="FONT-SIZE: 14pt">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;游戏双方轮流操作；</p>
<p style="FONT-SIZE: 14pt">（3）玩家的每次操作是选择其中某一堆牌，然后从中取走任意张；</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;最后一次去拍的一方为获胜方；<br>&nbsp; <br>定义: 假设 (xm&nbsp;&#183; &#183; &#183; x0)2 和(ym&nbsp;&#183; &#183; &#183; y0)2 的nim-sum是(zm &#183; &#183; &#183; z0)2,则我们表示成 (xm&nbsp;&#183; &#183; &#183; x0)2 &#8853; (ym&nbsp;&#183; &#183; &#183; y0)2&nbsp;= (zm &#183; &#183; &#183; z0)2,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这里，zk&nbsp;= xk&nbsp;+ yk&nbsp;(mod 2)（k=0&#8230;m）. </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img border="0" src="http://www.cppblog.com/images/cppblog_com/miyu/c1.jpg"><br></p>
<p>nim游戏的定理一：</p>
<p>&nbsp;对于nim游戏的某个位置(x1,x2,x3),当且仅当它各部分的nim-sum等于0时（即x1&#8853;x2&#8853;x3=0）（x1，x2，x3做异或操作^），则当前位于必败点。</p>
<p>&nbsp;<wbr>定理一也适用于更多堆的情况！<br><br></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" class="MsoNormal"><span style="COLOR: #3366ff">例题：</span><span style="COLOR: #3366ff">pku 2234</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" class="MsoNormal"><span style="COLOR: #3366ff">例题：</span><span style="COLOR: #3366ff">hdu 1730</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" class="MsoNormal"><span style="COLOR: #3366ff">例题：</span><span style="COLOR: #3366ff">pku 1740</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" class="MsoNormal"><span style="COLOR: #3366ff">例题：</span><span style="COLOR: #3366ff">pku 1704</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" class="MsoNormal"><span style="COLOR: #3366ff">例题：</span><span style="COLOR: #3366ff">pku 1082 (</span><span style="COLOR: #3366ff">大量分析</span><span style="COLOR: #3366ff">&#8230; </span><span style="COLOR: #3366ff">结论很简单。</span><span style="COLOR: #3366ff"> </span><span style="COLOR: #3366ff">也可以根据简单的推论模拟实现。</span><span style="COLOR: #3366ff">)</span></p>
<img src ="http://www.cppblog.com/MiYu/aggbug/122753.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-09 11:24 <a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122753.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ HDU 1133 Buy the Ticket ACM 1133 IN HDU </title><link>http://www.cppblog.com/MiYu/archive/2010/08/08/122676.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Sun, 08 Aug 2010 09:20:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/08/122676.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122676.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/08/122676.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122676.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122676.html</trackback:ping><description><![CDATA[<span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1>______________白白の屋</font></a><br><br>题目地址 :<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=1133">http://acm.hdu.edu.cn/showproblem.php?pid=1133</a><br>题目描述:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">Problem&nbsp;Description<br>The&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Harry&nbsp;Potter&nbsp;and&nbsp;the&nbsp;Goblet&nbsp;of&nbsp;Fire</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;will&nbsp;be&nbsp;on&nbsp;show&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;the&nbsp;next&nbsp;few&nbsp;days.&nbsp;As&nbsp;a&nbsp;crazy&nbsp;fan&nbsp;of&nbsp;Harry&nbsp;Potter,&nbsp;you&nbsp;will&nbsp;go&nbsp;to&nbsp;the&nbsp;cinema&nbsp;and&nbsp;have&nbsp;the&nbsp;first&nbsp;sight,&nbsp;won&#8217;t&nbsp;you</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000"><br><br>Suppose&nbsp;the&nbsp;cinema&nbsp;only&nbsp;has&nbsp;one&nbsp;ticket</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">office&nbsp;and&nbsp;the&nbsp;price&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;per</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">ticket&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">&nbsp;dollars.&nbsp;The&nbsp;queue&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;buying&nbsp;the&nbsp;tickets&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;consisted&nbsp;of&nbsp;m&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;n&nbsp;persons&nbsp;(m&nbsp;persons&nbsp;each&nbsp;only&nbsp;has&nbsp;the&nbsp;</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">dollar&nbsp;bill&nbsp;and&nbsp;n&nbsp;persons&nbsp;each&nbsp;only&nbsp;has&nbsp;the&nbsp;</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">dollar&nbsp;bill).<br><br>Now&nbsp;the&nbsp;problem&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;you&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;to&nbsp;calculate&nbsp;the&nbsp;number&nbsp;of&nbsp;different&nbsp;ways&nbsp;of&nbsp;the&nbsp;queue&nbsp;that&nbsp;the&nbsp;buying&nbsp;process&nbsp;won</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">t&nbsp;be&nbsp;stopped&nbsp;from&nbsp;the&nbsp;first&nbsp;person&nbsp;till&nbsp;the&nbsp;last&nbsp;person.&nbsp;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">Note:&nbsp;initially&nbsp;the&nbsp;ticket</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">office&nbsp;has&nbsp;no&nbsp;money.&nbsp;<br><br>The&nbsp;buying&nbsp;process&nbsp;will&nbsp;be&nbsp;stopped&nbsp;on&nbsp;the&nbsp;occasion&nbsp;that&nbsp;the&nbsp;ticket</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">office&nbsp;has&nbsp;no&nbsp;</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">dollar&nbsp;bill&nbsp;but&nbsp;the&nbsp;first&nbsp;person&nbsp;of&nbsp;the&nbsp;queue&nbsp;only&nbsp;has&nbsp;the&nbsp;</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">dollar&nbsp;bill.<br>&nbsp;<br><br>Input<br>The&nbsp;input&nbsp;file&nbsp;contains&nbsp;several&nbsp;test&nbsp;cases.&nbsp;Each&nbsp;test&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;made&nbsp;up&nbsp;of&nbsp;two&nbsp;integer&nbsp;numbers:&nbsp;m&nbsp;and&nbsp;n.&nbsp;It&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;terminated&nbsp;by&nbsp;m&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;n&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">.&nbsp;Otherwise,&nbsp;m,&nbsp;n&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">.<br>&nbsp;<br><br>Output<br>For&nbsp;each&nbsp;test&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">,&nbsp;first&nbsp;print&nbsp;the&nbsp;test&nbsp;number&nbsp;(counting&nbsp;from&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;one&nbsp;line,&nbsp;then&nbsp;output&nbsp;the&nbsp;number&nbsp;of&nbsp;different&nbsp;ways&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;another&nbsp;line.<br>&nbsp;<br><br>Sample&nbsp;Input<br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Sample&nbsp;Output<br>Test&nbsp;#</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #000000">6</span><span style="COLOR: #000000"><br>Test&nbsp;#</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #000000">18</span><span style="COLOR: #000000"><br>Test&nbsp;#</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #000000">180</span></div>
<br><span style="COLOR: red; FONT-SIZE: 18pt">卡特兰数的应用~~~&nbsp; ^_^</span><br><span style="COLOR: #ff6600">1133 公式推导如下 :</span><br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 12pt; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">//MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1>______________白白の屋</font></a></span><br><br>(&nbsp;C(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n,&nbsp;n)&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;C(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n,&nbsp;m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;)&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;n</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;化简即&nbsp;(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n)</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;(m</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br><br>推导过程如下&nbsp;:<br><br>m个人拿50，n个人拿100&nbsp;<br><br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">:&nbsp;&nbsp;&nbsp;&nbsp;所以如果&nbsp;n&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;m，那么排序方法数为&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;这一点很容易想清楚&nbsp;<br><br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">:&nbsp;&nbsp;&nbsp;&nbsp;现在我们假设&nbsp;拿50的人用&nbsp;&#8216;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&#8217;表示，&nbsp;拿100的人用&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;表示。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果有这么一个序列&nbsp;</span><span style="COLOR: #000000">0101101001001111</span><span style="COLOR: #000000">.&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当第K个位置出现1的个数多余0的个数时就是一个不合法序列了<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;假设m</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">&nbsp;n</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">3的一个序列是：</span><span style="COLOR: #000000">0110100</span><span style="COLOR: #000000">&nbsp;显然，它不合法，&nbsp;现在我们把它稍微变化一下：&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把第二个1（这个1前面的都是合法的）后面的所有位0变成1，1变成0&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;就得到&nbsp;</span><span style="COLOR: #000000">0111011</span><span style="COLOR: #000000">&nbsp;这个序列1的数量多于0的数量，&nbsp;显然不合法，&nbsp;但现在的关键不是看这个序列是不是合法的&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;关键是：它和我们的不合法序列&nbsp;</span><span style="COLOR: #000000">0110100</span><span style="COLOR: #000000">&nbsp;成一一对应的关系&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;也就是说任意一个不合法序列(m个0，n个1)，&nbsp;都可以由另外一个序列(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1个0和m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1个1)得到&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;另外我们知道，一个序列要么是合法的，要么是不合法的&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所以，合法序列数量&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;序列总数量&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;不合法序列的总量&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;序列总数可以这样计算m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n&nbsp;个位置中，&nbsp;选择&nbsp;n&nbsp;个位置出来填上&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">，&nbsp;所以是&nbsp;C(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n,&nbsp;n)&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不合法序列的数量就是：&nbsp;m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n&nbsp;个位置中，&nbsp;选择&nbsp;m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;个位置出来填上&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;所以是&nbsp;C(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n,&nbsp;m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;然后每个人都是不一样的，所以需要全排列&nbsp;m</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;n</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所以最后的公式为 :&nbsp; (&nbsp;C(m<span style="COLOR: #000000">+</span><span style="COLOR: #000000">n,&nbsp;n)&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;C(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n,&nbsp;m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;)&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;n</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;化简即&nbsp;(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n)</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;(m</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><br><br>推广:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果原来有p张50元的话,那么不合法的序列的数量应该是:任意一个不合法序列(m个0，n个1)，<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;都可以由另外一个序列(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1个0和m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">p个1)得到,所以是m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n&nbsp;个位置中，&nbsp;选择&nbsp;m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">p&nbsp;个位置<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;出来填上&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;所以是&nbsp;C(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n,&nbsp;m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">p)&nbsp;接下来的化简就不推了.<br></span></div>
<br><br><span style="COLOR: #ff6600; FONT-SIZE: 24pt">代码如下 :<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 12pt; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #008000"><span style="COLOR: #000000">//MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1>______________白白の屋</font></a></span></span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;MAX&nbsp;100</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;BASE&nbsp;10000</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;multiply(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;a[],</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Max,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;b)&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">大数乘小数</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i,array</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">Max</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">)&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">b</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">a[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;array</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">BASE;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array&nbsp;</span><span style="COLOR: #000000">/=</span><span style="COLOR: #000000">&nbsp;BASE;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br>&nbsp;<br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;divide(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;a[],&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Max,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;b)&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">大数除小数</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i,div</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Max;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;div&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;div</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">BASE&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;a[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;div&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;b;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;div&nbsp;</span><span style="COLOR: #000000">%=</span><span style="COLOR: #000000">&nbsp;b;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;fact[</span><span style="COLOR: #000000">205</span><span style="COLOR: #000000">][MAX];<br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setFact&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fact[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">][MAX</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;fact[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][MAX</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">200</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;i&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy&nbsp;(&nbsp;fact[i]&nbsp;,&nbsp;fact[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]&nbsp;,&nbsp;MAX&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;)&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;multiply&nbsp;(&nbsp;fact[i]&nbsp;,&nbsp;MAX&nbsp;,&nbsp;i&nbsp;);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>}<br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;outPut&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ctl[MAX]&nbsp;)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;MAX&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;ctl[i]&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">去前导0&nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;ctl[i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">]&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;MAX&nbsp;)&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%04d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;ctl[i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">]&nbsp;);&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putchar&nbsp;(&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\n</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;);&nbsp;<br>}<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;res[MAX];<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;M,N;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ca&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setFact();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;cin&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;M&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;N&nbsp;,&nbsp;M&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;N&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Test&nbsp;#%d:\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,ca</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;N&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;M&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">continue</span><span style="COLOR: #000000">;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy&nbsp;(&nbsp;res&nbsp;,&nbsp;fact[M</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">N]&nbsp;,&nbsp;MAX&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;)&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;阶乘&nbsp;(&nbsp;m&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;n&nbsp;)</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;multiply&nbsp;(&nbsp;res,&nbsp;MAX,&nbsp;M&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;N&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&nbsp;m&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;n&nbsp;)</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;(&nbsp;m</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;divide&nbsp;(&nbsp;res,&nbsp;MAX,&nbsp;M&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&nbsp;m&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;n&nbsp;)</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;(&nbsp;m</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;)&nbsp;&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;(&nbsp;m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;outPut&nbsp;(&nbsp;res&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}<br></span></div>
</span></span>
<img src ="http://www.cppblog.com/MiYu/aggbug/122676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-08 17:20 <a href="http://www.cppblog.com/MiYu/archive/2010/08/08/122676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ HDU 1023 1130 1133 1134 2067 ACM 1023 1130 1133 1134 2067 IN HDU ( 卡特兰数 专题 catalan )</title><link>http://www.cppblog.com/MiYu/archive/2010/08/08/122674.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Sun, 08 Aug 2010 09:08:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/08/122674.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122674.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/08/122674.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122674.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122674.html</trackback:ping><description><![CDATA[MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/">______________白白の屋<br></a><br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000; FONT-SIZE: 36pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: red"> 卡特兰数专题</span></span></div>
<br><strong>更多卡特兰数资料 请看</strong>&nbsp;&nbsp;<a href="http://www.cppblog.com/MiYu/archive/2010/08/07/122573.html"><span style="FONT-SIZE: 24pt">卡特兰数</span></a><br><span style="FONT-SIZE: 24pt">&nbsp;<strong><br></strong><span style="COLOR: red">HDU 1023 1130&nbsp; 1134&nbsp; 2067</span> <span style="FONT-SIZE: 14pt"><strong>都是标准的卡特兰数, 具体说明请见</strong></span> </span><a href="http://www.cppblog.com/MiYu/archive/2010/08/07/122573.html">卡特兰数</a>&nbsp; ,<strong><span style="FONT-SIZE: 14pt">只是有一点需要注意, 在35以</span>下的catalan数<br><br>可以</strong><strong>直接使用 <span style="COLOR: red">long long 或 __int64</span> 提交的, 但是当 <span style="COLOR: red">N 超过35</span> 之后, 这就需要<span style="COLOR: red">大数</span>了.&nbsp; <br><br>下面是 <span style="COLOR: red">2067 的 long long</span> 代码 ,详细请见&nbsp; (&nbsp;&nbsp;</strong><a href="http://www.cppblog.com/MiYu/archive/2010/08/07/122569.html"><strong>2067 小兔的棋盘 解题报告</strong></a><strong>&nbsp;) 没有使用递归式 , 直接用的catalan 的 迭代式.&nbsp;:</strong><br><br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 12pt; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">//MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1>______________白白の屋</font></a></span><br><br>#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br>typedef&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;int64;<br>int64&nbsp;f[</span><span style="COLOR: #000000">37</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">37</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ca</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;N;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;cin&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;N&nbsp;,&nbsp;N&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;ca;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;i&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;N;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;i&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">][i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;N;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;i&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;j&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;i;&nbsp;j&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;N;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;j&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;i&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;j&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[i][j]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;f[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][j];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[i][j]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;f[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][j]&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;f[i][j</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d&nbsp;%d&nbsp;%I64d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;ca,&nbsp;N,&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;f[N</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][N]&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}<br><br></span></div>
<br><br><span style="COLOR: #ff6600">除了 2067 外, 其他的题目均是大数的类型, 在这里, 各位 ACMer , 请出你们的大数模板吧 . <br><br>或者某些代码牛人可以自己手打&nbsp;&lt;-------0rz <br><br>写好代码后 只需按题目要求格式做相应的改变, 便能直接AC.&nbsp; 1133 稍微有点不同. 会在<br><br>最后给出它的解题报告.<br><br>1023&nbsp; 1130 1134 直接使用 catalan数 的递归式 ,代码如下, 使用的是高精度乘法 &nbsp;(&nbsp;需要在输入结束控制方面根据各题做相应变化 ) :</span><br><br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 12pt; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">//MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1>______________白白の屋</font></a></span><br><br>#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;MAX&nbsp;105</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;BASE&nbsp;10000</span><span style="COLOR: #000000"><br>typedef&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;myType[MAX</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;multiply&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;a[],&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Max,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;b&nbsp;)&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">大数乘小数</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i,array</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">Max</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">)&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">b</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">a[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;array</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">BASE;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array&nbsp;</span><span style="COLOR: #000000">/=</span><span style="COLOR: #000000">&nbsp;BASE;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br>&nbsp;<br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;divide&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;a[],&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Max,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;b&nbsp;)&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">大数除小数</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i,div</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Max;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;div&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;div</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">BASE&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;a[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;div&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;b;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;div&nbsp;</span><span style="COLOR: #000000">%=</span><span style="COLOR: #000000">&nbsp;b;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;outPut&nbsp;(&nbsp;myType&nbsp;ctl[MAX]&nbsp;,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;N&nbsp;)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;MAX&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;ctl[N][i]&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">去前导0&nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;ctl[N][i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;MAX&nbsp;)&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%04d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;ctl[N][i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">]&nbsp;);&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;&nbsp;<br>}<br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setNum&nbsp;(&nbsp;myType&nbsp;ctl[MAX]&nbsp;)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset&nbsp;(&nbsp;ctl[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">],&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;MAX&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;)&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctl[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][MAX</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">101</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy&nbsp;(&nbsp;ctl[i],&nbsp;ctl[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">],&nbsp;MAX&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;)&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;multiply&nbsp;(&nbsp;ctl[i],&nbsp;MAX,&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;divide&nbsp;(&nbsp;ctl[i],&nbsp;MAX,&nbsp;i&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>}<br>myType&nbsp;ctl[MAX];&nbsp;<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;setNum&nbsp;(&nbsp;ctl&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;N;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;cin&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;N&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;这里根据各题要求需要做相应变化</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;outPut&nbsp;(&nbsp;ctl,&nbsp;N&nbsp;);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}<br><br></span></div>
<br><br><span style="COLOR: #ff6600">1133 公式推导如下 :</span><br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 12pt; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">//MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1>______________白白の屋</font></a></span><br><br>(&nbsp;C(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n,&nbsp;n)&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;C(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n,&nbsp;m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;)&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;n</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;化简即&nbsp;(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n)</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;(m</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br><br>推导过程如下&nbsp;:<br><br>m个人拿50，n个人拿100&nbsp;<br><br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">:&nbsp;&nbsp;&nbsp;&nbsp;所以如果&nbsp;n&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;m，那么排序方法数为&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;这一点很容易想清楚&nbsp;<br><br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">:&nbsp;&nbsp;&nbsp;&nbsp;现在我们假设&nbsp;拿50的人用&nbsp;&#8216;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&#8217;表示，&nbsp;拿100的人用&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;表示。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果有这么一个序列&nbsp;</span><span style="COLOR: #000000">0101101001001111</span><span style="COLOR: #000000">.&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当第K个位置出现1的个数多余0的个数时就是一个不合法序列了<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;假设m</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">&nbsp;n</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">3的一个序列是：</span><span style="COLOR: #000000">0110100</span><span style="COLOR: #000000">&nbsp;显然，它不合法，&nbsp;现在我们把它稍微变化一下：&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把第二个1（这个1前面的都是合法的）后面的所有位0变成1，1变成0&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;就得到&nbsp;</span><span style="COLOR: #000000">0111011</span><span style="COLOR: #000000">&nbsp;这个序列1的数量多于0的数量，&nbsp;显然不合法，&nbsp;但现在的关键不是看这个序列是不是合法的&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;关键是：它和我们的不合法序列&nbsp;</span><span style="COLOR: #000000">0110100</span><span style="COLOR: #000000">&nbsp;成一一对应的关系&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;也就是说任意一个不合法序列(m个0，n个1)，&nbsp;都可以由另外一个序列(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1个0和m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1个1)得到&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;另外我们知道，一个序列要么是合法的，要么是不合法的&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所以，合法序列数量&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;序列总数量&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;不合法序列的总量&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;序列总数可以这样计算m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n&nbsp;个位置中，&nbsp;选择&nbsp;n&nbsp;个位置出来填上&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">，&nbsp;所以是&nbsp;C(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n,&nbsp;n)&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不合法序列的数量就是：&nbsp;m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n&nbsp;个位置中，&nbsp;选择&nbsp;m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;个位置出来填上&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;所以是&nbsp;C(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n,&nbsp;m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;然后每个人都是不一样的，所以需要全排列&nbsp;m</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;n</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所以最后的公式为 :&nbsp; (&nbsp;C(m<span style="COLOR: #000000">+</span><span style="COLOR: #000000">n,&nbsp;n)&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;C(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n,&nbsp;m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;)&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;n</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;化简即&nbsp;(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n)</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;(m</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><br><br>推广:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果原来有p张50元的话,那么不合法的序列的数量应该是:任意一个不合法序列(m个0，n个1)，<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;都可以由另外一个序列(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1个0和m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">p个1)得到,所以是m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n&nbsp;个位置中，&nbsp;选择&nbsp;m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">p&nbsp;个位置<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;出来填上&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;所以是&nbsp;C(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">n,&nbsp;m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">p)&nbsp;接下来的化简就不推了.<br></span></div>
<br><br><span style="COLOR: #ff6600; FONT-SIZE: 24pt">代码如下 :<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 12pt; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #008000"><span style="COLOR: #000000">//MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1>______________白白の屋</font></a></span></span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;MAX&nbsp;100</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;BASE&nbsp;10000</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;multiply(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;a[],</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Max,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;b)&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">大数乘小数</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i,array</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">Max</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">)&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">b</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">a[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;array</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">BASE;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array&nbsp;</span><span style="COLOR: #000000">/=</span><span style="COLOR: #000000">&nbsp;BASE;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br>&nbsp;<br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;divide(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;a[],&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Max,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;b)&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">大数除小数</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i,div</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Max;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;div&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;div</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">BASE&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;a[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;div&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;b;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;div&nbsp;</span><span style="COLOR: #000000">%=</span><span style="COLOR: #000000">&nbsp;b;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;fact[</span><span style="COLOR: #000000">205</span><span style="COLOR: #000000">][MAX];<br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setFact&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fact[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">][MAX</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;fact[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][MAX</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">200</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;i&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy&nbsp;(&nbsp;fact[i]&nbsp;,&nbsp;fact[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]&nbsp;,&nbsp;MAX&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;)&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;multiply&nbsp;(&nbsp;fact[i]&nbsp;,&nbsp;MAX&nbsp;,&nbsp;i&nbsp;);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>}<br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;outPut&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ctl[MAX]&nbsp;)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;MAX&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;ctl[i]&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">去前导0&nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;ctl[i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">]&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;MAX&nbsp;)&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%04d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;ctl[i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">]&nbsp;);&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putchar&nbsp;(&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\n</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;);&nbsp;<br>}<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;res[MAX];<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;M,N;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ca&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setFact();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;cin&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;M&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;N&nbsp;,&nbsp;M&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;N&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Test&nbsp;#%d:\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,ca</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;N&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;M&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">continue</span><span style="COLOR: #000000">;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy&nbsp;(&nbsp;res&nbsp;,&nbsp;fact[M</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">N]&nbsp;,&nbsp;MAX&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;)&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//阶乘&nbsp;(&nbsp;m&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;n&nbsp;)</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;multiply&nbsp;(&nbsp;res,&nbsp;MAX,&nbsp;M&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;N&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//(&nbsp;m&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;n&nbsp;)</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;(&nbsp;m</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;divide&nbsp;(&nbsp;res,&nbsp;MAX,&nbsp;M&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//(&nbsp;m&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;n&nbsp;)</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;(&nbsp;m</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;)&nbsp;&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;(&nbsp;m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;outPut&nbsp;(&nbsp;res&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}<br></span></div>
<br></span>
<img src ="http://www.cppblog.com/MiYu/aggbug/122674.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-08 17:08 <a href="http://www.cppblog.com/MiYu/archive/2010/08/08/122674.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>错排公式 ( ACM 数论 组合 )</title><link>http://www.cppblog.com/MiYu/archive/2010/08/08/122615.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Sun, 08 Aug 2010 00:58:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/08/122615.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122615.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/08/122615.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122615.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122615.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1>______________白白の屋</font></a></span></p>
<p><span style="COLOR: #ff6600; FONT-SIZE: 18pt">错排公式:</span></p>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; COLOR: #ff6600; FONT-SIZE: 14pt; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">错排公式<br><br>目录<br>错排公式的由来<br>递推的方法推导错排公式<br>容斥原理<br>简化公式<br>&nbsp;<br><br>错排公式的由来<br><br>　　pala提出的问题:&nbsp;十本不同的书放在书架上。现重新摆放，使每本书都不在原来放的位置。有几种摆法？<br>　　这个问题推广一下，就是错排问题:&nbsp;n个有序的元素应有n！种不同的排列。如若一个排列式的所有的元素都不在原来的位置上，则称这个排列为错排。<br>递推的方法推导错排公式<br><br>　　当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用M(n)表示,那么M(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)就表示n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1个编号元素放在n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1个编号位置,各不对应的方法数,其它类推.<br>　　第一步,把第n个元素放在一个位置,比如位置k,一共有n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1种方法;<br>　　第二步,放编号为k的元素,这时有两种情况.</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,把它放到位置n,那么,对于剩下的n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">2个元素,就有M(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)种方法;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,不把它放到位置n,这时,对于这n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1个元素,有M(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)种方法;<br>　　综上得到<br>　　M(n)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)[M(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">M(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)]<br>　　特殊地，M(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,M(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"><br>　　下面通过这个递推关系推导通项公式:<br>　　为方便起见，设M(k)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">k</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">N(k),&nbsp;(k</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,&#8230;,n)<br>　　则N(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,N(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"><br>　　n</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">3时,n</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">N(n)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">N(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">N(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)<br>　　即&nbsp;nN(n)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)N(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">N(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)<br>　　于是有N(n)</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">N(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">=-</span><span style="COLOR: #000000">[N(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">N(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)]</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">n)[</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)][</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)]&#8230;(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">)[N(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">N(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br>　　因此<br>　　N(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">N(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br>　　N(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">N(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br>　　相加，可得<br>　　N(n)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">!+</span><span style="COLOR: #000000">&#8230;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">!+</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br>　　因此<br>　　M(n)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">[(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">!+</span><span style="COLOR: #000000">&#8230;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">!+</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">]<br>　　可以得到<br>　　错排公式为M(n)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">!-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">!+</span><span style="COLOR: #000000">&#8230;..</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">)<br>容斥原理<br><br>　　正整数1、</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">、</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">、&#8230;&#8230;、n的全排列有n</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">种，其中第k位是k的排列有（n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">，当k取1、</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">、</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">、&#8230;&#8230;、n时，共有n</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">（n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">种排列，由于是错排，这些排列应排除，但是此时把同时有两个数不错排的排列多排除了一次，应补上；在补上时，把同时有三个数不错排的排列多补上了一次，应排除；&#8230;&#8230;；继续这一过程，得到错排的排列种数为<br>　　M(n)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">!-</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">!/</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">!+</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">!/</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">!-</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">!/</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">!+</span><span style="COLOR: #000000">&#8230;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">!/</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">sigma(k</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">n)&nbsp;(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">k</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">!/</span><span style="COLOR: #000000">k</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br>　　即M(n)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">!-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">!+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">!-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">!+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">!+</span><span style="COLOR: #000000">..</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">]<br>　　注:sigma表示连加符号,(k</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">n)是连加的范围<br>简化公式<br><br>　　另外：书上的错排公式为Dn</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">!-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">!+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">!-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">!-</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/dot.gif">..</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">),此公式算n很大时就很不方便．后来发现它可以化简为１个优美的式子Dn</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">[n</span><span style="COLOR: #000000">!/</span><span style="COLOR: #000000">e</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">0.5</span><span style="COLOR: #000000">],[x]为取整函数．<br>　　公式证明较简单．观察一般书上的公式，可以发现e</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1的前项与之相同，然后作比较可得</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">Dn</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">e</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">/&lt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">0.5</span><span style="COLOR: #000000">,于是就得到这个简单而优美的公式（此仅供参考）</span></div>
<img src ="http://www.cppblog.com/MiYu/aggbug/122615.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-08 08:58 <a href="http://www.cppblog.com/MiYu/archive/2010/08/08/122615.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>卡特兰数 Catalan数 ( ACM 数论 组合 )</title><link>http://www.cppblog.com/MiYu/archive/2010/08/07/122573.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Sat, 07 Aug 2010 13:51:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/07/122573.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122573.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/07/122573.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122573.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122573.html</trackback:ping><description><![CDATA[
<div style="border-left-color: rgb(204, 204, 204); padding-bottom: 4px; background-color: rgb(238, 238, 238); padding-left: 4px; width: 98%; padding-right: 5px; font-size: 14pt; word-break: break-all; padding-top: 4px; "><span style="COLOR: #000000"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: 16px sans-serif; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" ><span style="LINE-HEIGHT: 24px" >
<h1 style="BACKGROUND-IMAGE: none; BORDER-BOTTOM: rgb(170,170,170) 1px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2em; MARGIN: 0px 0px 0.1em; WIDTH: auto; COLOR: black; FONT-SIZE: 1.6em; FONT-WEIGHT: normal; PADDING-TOP: 0px; background-origin: initial; background-clip: initial" id="firstHeading" class="firstHeading"><span style="COLOR: red; FONT-SIZE: 24pt">维基百科资料</span>:</h1>
<p style="BACKGROUND-IMAGE: none; BORDER-BOTTOM: rgb(170,170,170) 1px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2em; MARGIN: 0px 0px 0.1em; WIDTH: auto; COLOR: black; FONT-SIZE: 1.6em; FONT-WEIGHT: normal; PADDING-TOP: 0px; background-origin: initial; background-clip: initial" class="firstHeading">&nbsp;</p>
<h1 style="BACKGROUND-IMAGE: none; BORDER-BOTTOM: rgb(170,170,170) 1px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2em; MARGIN: 0px 0px 0.1em; WIDTH: auto; COLOR: black; FONT-SIZE: 1.6em; FONT-WEIGHT: normal; PADDING-TOP: 0px; background-origin: initial; background-clip: initial" class="firstHeading">卡塔兰数</h1>
<div style="position: relative; line-height: 1.5em; width: 1232px; font-size: 15px; " id="bodyContent">
<p style="LINE-HEIGHT: 1.5em; MARGIN: 0.4em 0px 0.5em"><strong>卡塔兰数</strong>是<a style="BACKGROUND-IMAGE: none; COLOR: rgb(6,69,173); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" class="mw-redirect" title="组合数学" href="http://www.cppblog.com/zh-cn/%E7%B5%84%E5%90%88%E6%95%B8%E5%AD%B8">组合数学</a>中一个常出现在各种计数问题中出现的<a style="BACKGROUND-IMAGE: none; COLOR: rgb(6,69,173); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" title="数列" href="http://www.cppblog.com/zh-cn/%E6%95%B0%E5%88%97">数列</a>。由以<a style="BACKGROUND-IMAGE: none; COLOR: rgb(6,69,173); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" class="mw-redirect" title="比利时" href="http://www.cppblog.com/zh-cn/%E6%AF%94%E5%88%A9%E6%99%82">比利时</a>的数学家<a style="BACKGROUND-IMAGE: none; COLOR: rgb(204,34,0); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" class="new" title="欧仁&#183;查理&#183;卡塔兰（尚未撰写）" href="http://www.cppblog.com/w/index.php?title=%E6%AC%A7%E4%BB%81%C2%B7%E6%9F%A5%E7%90%86%C2%B7%E5%8D%A1%E5%A1%94%E5%85%B0&amp;action=edit&amp;redlink=1">欧仁&#183;查理&#183;卡塔兰</a><span class="Apple-converted-space">&nbsp;</span>(<a style="BACKGROUND-IMAGE: none; COLOR: rgb(6,69,173); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" title="1814年" href="http://www.cppblog.com/zh-cn/1814%E5%B9%B4">1814</a>&#8211;<a style="BACKGROUND-IMAGE: none; COLOR: rgb(6,69,173); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" title="1894年" href="http://www.cppblog.com/zh-cn/1894%E5%B9%B4">1894</a>)命名。</p>
<p style="LINE-HEIGHT: 1.5em; MARGIN: 0.4em 0px 0.5em">卡塔兰数的一般项公式为<span class="Apple-converted-space">&nbsp;</span><img style="BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; MARGIN: 0px; BORDER-TOP-STYLE: none; VERTICAL-ALIGN: middle; BORDER-LEFT-STYLE: none" class="tex" alt="C_n = \frac{1}{n+1}{2n \choose n} = \frac{(2n)!}{(n+1)!n!}" src="http://upload.wikimedia.org/math/d/1/1/d118d8cea7b639dfd5244fcba65910cf.png">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 另类递归式：&nbsp; h(n)<span style="COLOR: #000000">=</span><span style="COLOR: #000000">((</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">))</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">h(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);</span></p>
<p style="LINE-HEIGHT: 1.5em; MARGIN: 0.4em 0px 0.5em">前几项为 （<a style="BACKGROUND-IMAGE: none; COLOR: rgb(6,69,173); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" title="整数数列线上大全" href="http://www.cppblog.com/zh-cn/%E6%95%B4%E6%95%B8%E6%95%B8%E5%88%97%E7%B7%9A%E4%B8%8A%E5%A4%A7%E5%85%A8">OEIS</a>中的数列<a style="BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(51,102,187); TEXT-DECORATION: none; PADDING-TOP: 0px; background-origin: initial; background-clip: initial" class="extiw" title="oeis:A000108" href="http://oeis.org/A000108">A000108</a>）: 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, ...</p>
<h2 style="BACKGROUND-IMAGE: none; BORDER-BOTTOM: rgb(170,170,170) 1px solid; PADDING-BOTTOM: 0.17em; MARGIN: 0px 0px 0.6em; WIDTH: auto; COLOR: black; FONT-SIZE: 22px; FONT-WEIGHT: normal; PADDING-TOP: 0.5em; background-origin: initial; background-clip: initial"><span style="FLOAT: right; MARGIN-LEFT: 1em; FONT-SIZE: 15px; FONT-WEIGHT: normal !important" class="editsection">[<a style="BACKGROUND-IMAGE: none; COLOR: rgb(6,69,173); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" title="编辑段落：性质" href="http://www.cppblog.com/w/index.php?title=%E5%8D%A1%E5%A1%94%E5%85%B0%E6%95%B0&amp;action=edit&amp;section=1">编辑</a>]</span><span id=".E6.80.A7.E8.B4.A8" class="mw-headline">性质</span></h2>
<p style="LINE-HEIGHT: 1.5em; MARGIN: 0.4em 0px 0.5em"><em>C</em><sub><em>n</em></sub>的另一个表达形式为<img style="BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; MARGIN: 0px; BORDER-TOP-STYLE: none; VERTICAL-ALIGN: middle; BORDER-LEFT-STYLE: none" class="tex" alt="C_n = {2n\choose n} - {2n\choose n-1} \quad\mbox{ for }n\ge 1" src="http://upload.wikimedia.org/math/b/d/6/bd669af776b1293f2e8848dbcfa5a6f3.png"><span class="Apple-converted-space">&nbsp;</span>所以，<em>C</em><sub><em>n</em></sub>是一个<a style="BACKGROUND-IMAGE: none; COLOR: rgb(6,69,173); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" title="自然数" href="http://www.cppblog.com/zh-cn/%E8%87%AA%E7%84%B6%E6%95%B0">自然数</a>；这一点在先前的通项公式中并不显而易见。这个表达形式也是Andr&#233;对前一公式证明的基础。(见下文的<a style="BACKGROUND-IMAGE: none; COLOR: rgb(204,34,0); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" class="new" title="第二个证明（尚未撰写）" href="http://www.cppblog.com/w/index.php?title=%E7%AC%AC%E4%BA%8C%E4%B8%AA%E8%AF%81%E6%98%8E&amp;action=edit&amp;redlink=1">第二个证明</a>。)</p>
<p style="LINE-HEIGHT: 1.5em; MARGIN: 0.4em 0px 0.5em">卡塔兰数满足以下<a style="BACKGROUND-IMAGE: none; COLOR: rgb(6,69,173); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" class="mw-redirect" title="递推关系" href="http://www.cppblog.com/zh-cn/%E9%80%92%E6%8E%A8%E5%85%B3%E7%B3%BB">递推关系</a></p>
<dl style="MARGIN-TOP: 0.2em; MARGIN-BOTTOM: 0.5em">
<dd style="LINE-HEIGHT: 1.5em; MARGIN-BOTTOM: 0.1em; MARGIN-LEFT: 2em"><img style="BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: none; VERTICAL-ALIGN: middle; BORDER-LEFT-STYLE: none" class="tex" alt="C_0 = 1 \quad \mbox{and} \quad C_{n+1}=\sum_{i=0}^{n}C_i\,C_{n-i}\quad\mbox{for }n\ge 0." src="http://upload.wikimedia.org/math/6/2/1/6217b3c99a3243afcd5d8dbd58186822.png"></dd></dl>
<p style="LINE-HEIGHT: 1.5em; MARGIN: 0.4em 0px 0.5em">它也满足</p>
<dl style="MARGIN-TOP: 0.2em; MARGIN-BOTTOM: 0.5em">
<dd style="LINE-HEIGHT: 1.5em; MARGIN-BOTTOM: 0.1em; MARGIN-LEFT: 2em"><img style="BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: none; VERTICAL-ALIGN: middle; BORDER-LEFT-STYLE: none" class="tex" alt="C_0 = 1 \quad \mbox{and} \quad C_{n+1}=\frac{2(2n+1)}{n+2}C_n," src="http://upload.wikimedia.org/math/8/a/4/8a49332e4a46b3a2c7accec81160f5e3.png"></dd></dl>
<p style="LINE-HEIGHT: 1.5em; MARGIN: 0.4em 0px 0.5em">这提供了一个更快速的方法来计算卡塔兰数。</p>
<p style="LINE-HEIGHT: 1.5em; MARGIN: 0.4em 0px 0.5em">卡塔兰数的渐近增长为</p>
<dl style="MARGIN-TOP: 0.2em; MARGIN-BOTTOM: 0.5em">
<dd style="LINE-HEIGHT: 1.5em; MARGIN-BOTTOM: 0.1em; MARGIN-LEFT: 2em"><img style="BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: none; VERTICAL-ALIGN: middle; BORDER-LEFT-STYLE: none" class="tex" alt="C_n \sim \frac{4^n}{n^{3/2}\sqrt{\pi}}" src="http://upload.wikimedia.org/math/3/f/8/3f838aaa56c7ec71f80454fc181fea99.png"></dd></dl>
<p style="LINE-HEIGHT: 1.5em; MARGIN: 0.4em 0px 0.5em">它的含义是左式除以右式的商<a style="BACKGROUND-IMAGE: none; COLOR: rgb(6,69,173); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" title="极限" href="http://www.cppblog.com/zh-cn/%E6%9E%81%E9%99%90">趋向于</a>1当<em>n</em>&nbsp;&#8594;&nbsp;&#8734;。（这可以用<em>n</em>!的<a style="BACKGROUND-IMAGE: none; COLOR: rgb(6,69,173); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" title="斯特灵公式" href="http://www.cppblog.com/zh-cn/%E6%96%AF%E7%89%B9%E9%9D%88%E5%85%AC%E5%BC%8F">斯特灵公式</a>来证明。）</p>
<p style="LINE-HEIGHT: 1.5em; MARGIN: 0.4em 0px 0.5em">所有的奇卡塔兰数<em>C</em><sub><em>n</em></sub>都满足<span style="FONT-FAMILY: serif" class="texhtml"><em>n</em><span class="Apple-converted-space">&nbsp;</span>= 2<sup><em>k</em></sup><span class="Apple-converted-space">&nbsp;</span>&#8722; 1</span>。所有其他的卡塔兰数都是偶数。</p>
<h2 style="BACKGROUND-IMAGE: none; BORDER-BOTTOM: rgb(170,170,170) 1px solid; PADDING-BOTTOM: 0.17em; MARGIN: 0px 0px 0.6em; WIDTH: auto; COLOR: black; FONT-SIZE: 22px; FONT-WEIGHT: normal; PADDING-TOP: 0.5em; background-origin: initial; background-clip: initial"><span style="FLOAT: right; MARGIN-LEFT: 1em; FONT-SIZE: 15px; FONT-WEIGHT: normal !important" class="editsection">[<a style="BACKGROUND-IMAGE: none; COLOR: rgb(6,69,173); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" title="编辑段落：应用" href="http://www.cppblog.com/w/index.php?title=%E5%8D%A1%E5%A1%94%E5%85%B0%E6%95%B0&amp;action=edit&amp;section=2">编辑</a>]</span><span id=".E5.BA.94.E7.94.A8" class="mw-headline">应用</span></h2>
<p style="LINE-HEIGHT: 1.5em; MARGIN: 0.4em 0px 0.5em"><a style="BACKGROUND-IMAGE: none; COLOR: rgb(6,69,173); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" title="组合数学" href="http://www.cppblog.com/zh-cn/%E7%BB%84%E5%90%88%E6%95%B0%E5%AD%A6">组合数学</a>中有非常多.的组合结构可以用卡塔兰数来计数。在Richard P. Stanley的Enumerative Combinatorics: Volume 2一书的习题中包括了66个相异的可由卡塔兰数表达的组合结构。以下用<em>C</em><sub><em>n</em></sub>=3和<em>C</em><sub><em>n</em></sub>=4举若干例：</p>
<ul style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.5em; LIST-STYLE-TYPE: square; MARGIN: 0.3em 0px 0px 1.5em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: url(http://bits.wikimedia.org/skins-1.5/vector/images/bullet-icon.png?1); PADDING-TOP: 0px">
    <li style="MARGIN-BOTTOM: 0.1em"><em>C</em><sub><em>n</em></sub>表示长度<em>2n</em>的dyck word的个数。Dyck word是一个有<em>n</em>个X和<em>n</em>个Y组成的字串，且所有的部分字串皆满足X的个数大于等于Y的个数。以下为长度为6的dyck words: </li>
</ul>
<center>XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY</center>
<ul style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.5em; LIST-STYLE-TYPE: square; MARGIN: 0.3em 0px 0px 1.5em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: url(http://bits.wikimedia.org/skins-1.5/vector/images/bullet-icon.png?1); PADDING-TOP: 0px">
    <li style="MARGIN-BOTTOM: 0.1em">将上例的X换成左括号，Y换成右括号，<em>C</em><sub><em>n</em></sub>表示所有包含<em>n</em>组括号的合法运算式的个数: </li>
</ul>
<center>((())) ()(()) ()()() (())() (()())</center>
<ul style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.5em; LIST-STYLE-TYPE: square; MARGIN: 0.3em 0px 0px 1.5em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: url(http://bits.wikimedia.org/skins-1.5/vector/images/bullet-icon.png?1); PADDING-TOP: 0px">
    <li style="MARGIN-BOTTOM: 0.1em"><em>C</em><sub><em>n</em></sub>表示有<em>n+1</em>个叶子的<a style="BACKGROUND-IMAGE: none; COLOR: rgb(6,69,173); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" title="二叉树" href="http://www.cppblog.com/zh-cn/%E4%BA%8C%E5%8F%89%E6%A0%91">二叉树</a>的个数。 </li>
</ul>
<p style="MARGIN-BOTTOM: 0.1em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/miyu/Catalan_number_binary_tree_example.png" width="496" height="92"></p>
<ul style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.5em; LIST-STYLE-TYPE: square; MARGIN: 0.3em 0px 0px 1.5em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: url(http://bits.wikimedia.org/skins-1.5/vector/images/bullet-icon.png?1); PADDING-TOP: 0px">
    <li style="MARGIN-BOTTOM: 0.1em"><em>C</em><sub><em>n</em></sub>表示所有不同构的含<em>n</em>个分枝结点的满<a style="BACKGROUND-IMAGE: none; COLOR: rgb(6,69,173); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" title="二叉树" href="http://www.cppblog.com/zh-cn/%E4%BA%8C%E5%8F%89%E6%A0%91">二叉树</a>的个数。（一个有根二叉树是满的当且仅当每个结点都有两个子树或没有子树。） </li>
</ul>
<p style="LINE-HEIGHT: 1.5em; MARGIN: 0.4em 0px 0.5em"><em>证明：</em></p>
<p style="LINE-HEIGHT: 1.5em; MARGIN: 0.4em 0px 0.5em">令1表示进栈，0表示出栈，则可转化为求一个<em>2n</em>位、含<em>n</em>个1、<em>n</em>个0的二进制数，满足从左往右扫描到任意一位时，经过的0数不多于1数。显然含<em>n</em>个1、<em>n</em>个0的<em>2n</em>位二进制数共有<img style="BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; MARGIN: 0px; BORDER-TOP-STYLE: none; VERTICAL-ALIGN: middle; BORDER-LEFT-STYLE: none" class="tex" alt="{2n \choose n}" src="http://upload.wikimedia.org/math/c/9/2/c92da943df73dc077dbee5514376346a.png">个，下面考虑不满足要求的数目.<br></p>
<p style="LINE-HEIGHT: 1.5em; MARGIN: 0.4em 0px 0.5em">考虑一个含<em>n</em>个1、<em>n</em>个0的2n位二进制数，扫描到第<em>2m+1</em>位上时有<em>m+1</em>个0和<em>m</em>个1（容易证明一定存在这样的情况），则后面的0-1排列中必有<em>n-m</em>个1和<em>n-m-1</em>个0。将<em>2m+2</em>及其以后的部分0变成1、1变成0，则对应一个<em>n+1</em>个0和<em>n-1</em>个1的二进制数。反之亦然（相似的思路证明两者一一对应）。</p>
<p style="LINE-HEIGHT: 1.5em; MARGIN: 0.4em 0px 0.5em">从而<img style="BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; MARGIN: 0px; BORDER-TOP-STYLE: none; VERTICAL-ALIGN: middle; BORDER-LEFT-STYLE: none" class="tex" alt="C_n = {2n \choose n} - {2n \choose n + 1} = \frac{1}{n+1}{2n \choose n}" src="http://upload.wikimedia.org/math/4/8/2/4828faf1c29e4b699529f2275cc63453.png">。证毕。</p>
<ul style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.5em; LIST-STYLE-TYPE: square; MARGIN: 0.3em 0px 0px 1.5em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: url(http://bits.wikimedia.org/skins-1.5/vector/images/bullet-icon.png?1); PADDING-TOP: 0px">
    <li style="MARGIN-BOTTOM: 0.1em"><em>C</em><sub><em>n</em></sub>表示所有在<em>n</em><span class="Apple-converted-space">&nbsp;</span>&#215;<span class="Apple-converted-space">&nbsp;</span><em>n</em>格点中不越过对角线的<strong>单调路径</strong>的个数。一个单调路径从格点左下角出发，在格点右上角结束，每一步均为向上或向右。计算这种路径的个数等价于计算Dyck word的个数： X代表&#8220;向右&#8221;，Y代表&#8220;向上&#8221;。下图为<em>n</em><span class="Apple-converted-space">&nbsp;</span>= 4的情况：
    </li><li style="MARGIN-BOTTOM: 0.1em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img border="0" src="http://www.cppblog.com/images/cppblog_com/miyu/450px-Catalan_number_4x4_grid_example.svg.png"> </li>
</ul>
<ul style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.5em; LIST-STYLE-TYPE: square; MARGIN: 0.3em 0px 0px 1.5em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: url(http://bits.wikimedia.org/skins-1.5/vector/images/bullet-icon.png?1); PADDING-TOP: 0px">
    <li style="MARGIN-BOTTOM: 0.1em"><em>C</em><sub><em>n</em></sub>表示通过连结顶点而将<em>n</em>&nbsp;+&nbsp;2边的<a style="BACKGROUND-IMAGE: none; COLOR: rgb(204,34,0); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" class="new" title="凸多边形（尚未撰写）" href="http://www.cppblog.com/w/index.php?title=%E5%87%B8%E5%A4%9A%E8%BE%B9%E5%BD%A2&amp;action=edit&amp;redlink=1">凸多边形</a>分成<a style="BACKGROUND-IMAGE: none; COLOR: rgb(204,34,0); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" class="new" title="三角形（几何）（尚未撰写）" href="http://www.cppblog.com/w/index.php?title=%E4%B8%89%E8%A7%92%E5%BD%A2%EF%BC%88%E5%87%A0%E4%BD%95%EF%BC%89&amp;action=edit&amp;redlink=1">三角形</a>的方法个数。下图中为<em>n</em><span class="Apple-converted-space">&nbsp;</span>= 4的情况： </li>
</ul>
<p style="MARGIN-BOTTOM: 0.1em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img border="0" src="http://www.cppblog.com/images/cppblog_com/miyu/400px-Catalan-Hexagons-example.svg.png"></p>
<ul style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.5em; LIST-STYLE-TYPE: square; MARGIN: 0.3em 0px 0px 1.5em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: url(http://bits.wikimedia.org/skins-1.5/vector/images/bullet-icon.png?1); PADDING-TOP: 0px">
    <li style="MARGIN-BOTTOM: 0.1em"><em>C</em><sub><em>n</em></sub>表示对{1, ...,<span class="Apple-converted-space">&nbsp;</span><em>n</em>}依序进出<a style="BACKGROUND-IMAGE: none; COLOR: rgb(204,34,0); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" class="new" title="栈（尚未撰写）" href="http://www.cppblog.com/w/index.php?title=%E6%A0%88&amp;action=edit&amp;redlink=1">栈</a>的<a style="BACKGROUND-IMAGE: none; COLOR: rgb(6,69,173); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" class="mw-redirect" title="置换" href="http://www.cppblog.com/zh-cn/%E7%BD%AE%E6%8D%A2">置换</a>个数。一个置换<em>w</em>是依序进出栈的当<em>S</em>(<em>w</em>) = (1, ...,<span class="Apple-converted-space">&nbsp;</span><em>n</em>), 其中<em>S</em>(<em>w</em>)递归定义如下：令<em>w</em><span class="Apple-converted-space">&nbsp;</span>=<span class="Apple-converted-space">&nbsp;</span><em>unv</em>，其中<em>n</em>为<em>w</em>的最大元素，<em>u</em>和<em>v</em>为更短的数列；再令<em>S</em>(<em>w</em>) =<em>S</em>(<em>u</em>)<em>S</em>(<em>v</em>)<em>n</em>，其中<em>S</em>为所有含一个元素的数列的单位元。 </li>
</ul>
<ul style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.5em; LIST-STYLE-TYPE: square; MARGIN: 0.3em 0px 0px 1.5em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: url(http://bits.wikimedia.org/skins-1.5/vector/images/bullet-icon.png?1); PADDING-TOP: 0px">
    <li style="MARGIN-BOTTOM: 0.1em"><em>C</em><sub><em>n</em></sub>表示集合{1, ...,<span class="Apple-converted-space">&nbsp;</span><em>n</em>}的<a style="BACKGROUND-IMAGE: none; COLOR: rgb(204,34,0); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" class="new" title="不交叉划分（尚未撰写）" href="http://www.cppblog.com/w/index.php?title=%E4%B8%8D%E4%BA%A4%E5%8F%89%E5%88%92%E5%88%86&amp;action=edit&amp;redlink=1">不交叉划分</a>的个数. 那么,<span class="Apple-converted-space">&nbsp;</span><em>C</em><sub><em>n</em></sub><span class="Apple-converted-space">&nbsp;</span>永远不大于第<em>n</em>项<a style="BACKGROUND-IMAGE: none; COLOR: rgb(6,69,173); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" title="贝尔数" href="http://www.cppblog.com/zh-cn/%E8%B4%9D%E5%B0%94%E6%95%B0">贝尔数</a>.<span class="Apple-converted-space">&nbsp;</span><em>C</em><sub><em>n</em></sub>也表示集合{1, ..., 2<em>n</em>}的<a style="BACKGROUND-IMAGE: none; COLOR: rgb(204,34,0); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" class="new" title="不交叉划分（尚未撰写）" href="http://www.cppblog.com/w/index.php?title=%E4%B8%8D%E4%BA%A4%E5%8F%89%E5%88%92%E5%88%86&amp;action=edit&amp;redlink=1">不交叉划分</a>的个数，其中每个段落的长度为2。综合这两个结论，可以用<a style="BACKGROUND-IMAGE: none; COLOR: rgb(6,69,173); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" title="数学归纳法" href="http://www.cppblog.com/zh-cn/%E6%95%B0%E5%AD%A6%E5%BD%92%E7%BA%B3%E6%B3%95">数学归纳法</a>证明 that all of the<span class="Apple-converted-space">&nbsp;</span><em>free</em><span class="Apple-converted-space">&nbsp;</span><a style="BACKGROUND-IMAGE: none; COLOR: rgb(204,34,0); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" class="new" title="Cumulant（尚未撰写）" href="http://www.cppblog.com/w/index.php?title=Cumulant&amp;action=edit&amp;redlink=1">cumulant</a>s of degree more than 2 of the<span class="Apple-converted-space">&nbsp;</span><a style="BACKGROUND-IMAGE: none; COLOR: rgb(204,34,0); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" class="new" title="Wigner semicircle law（尚未撰写）" href="http://www.cppblog.com/w/index.php?title=Wigner_semicircle_law&amp;action=edit&amp;redlink=1">Wigner semicircle law</a><span class="Apple-converted-space">&nbsp;</span>are zero. This law is important in<span class="Apple-converted-space">&nbsp;</span><a style="BACKGROUND-IMAGE: none; COLOR: rgb(204,34,0); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" class="new" title="Free probability（尚未撰写）" href="http://www.cppblog.com/w/index.php?title=Free_probability&amp;action=edit&amp;redlink=1">free probability</a><span class="Apple-converted-space">&nbsp;</span>theory and the theory of<span class="Apple-converted-space">&nbsp;</span><a style="BACKGROUND-IMAGE: none; COLOR: rgb(204,34,0); TEXT-DECORATION: none; background-origin: initial; background-clip: initial" class="new" title="Random matrices（尚未撰写）" href="http://www.cppblog.com/w/index.php?title=Random_matrices&amp;action=edit&amp;redlink=1">random matrices</a>. </li>
</ul>
<ul style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.5em; LIST-STYLE-TYPE: square; MARGIN: 0.3em 0px 0px 1.5em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: url(http://bits.wikimedia.org/skins-1.5/vector/images/bullet-icon.png?1); PADDING-TOP: 0px">
    <li style="MARGIN-BOTTOM: 0.1em"><em>C</em><sub><em>n</em></sub>表示用<em>n</em>个长方形填充一个高度为<em>n</em>的阶梯状图形的方法个数。下图为<span class="Apple-converted-space">&nbsp;</span><em>n</em>&nbsp;=&nbsp;4的情况: </li>
</ul>
<p style="MARGIN-BOTTOM: 0.1em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border="0" src="http://www.cppblog.com/images/cppblog_com/miyu/400px-Catalan_stairsteps_4.svg.png"></p>
</div>
</span></span><br><br><span style="COLOR: red; FONT-SIZE: 24pt">百度百科资料</span>:<br>简介<br><br>　　中文:卡特兰数<br>　　Catalan数是组合数学中一个常出现在各种计数问题中出现的数列。由以比利时的数学家欧仁&#183;查理&#183;卡塔兰&nbsp;(</span><span style="COLOR: #000000">1814</span><span style="COLOR: #000000">&#8211;</span><span style="COLOR: #000000">1894</span><span style="COLOR: #000000">)命名。<br>　　原理：<br>　　令h(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,h(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)＝</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,catalan数满足递归式：<br>　　h(n)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;h(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">h(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;h(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">h(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;<img src="http://www.cppblog.com/Images/dot.gif">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;h(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)h(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)&nbsp;(其中n</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)<br>　　该递推关系的解为：<br>　　h(n)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">C(2n,n)</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">(n&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;(n</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">,<img src="http://www.cppblog.com/Images/dot.gif">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font face="Arial">另类递归式：&nbsp; h(n)<span style="COLOR: #000000">=</span><span style="COLOR: #000000">((</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">))</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">h(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);</span></font><br>　　<br>　　前几项为&nbsp;（OEIS中的数列A000108）:&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">14</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">42</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">132</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">429</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">1430</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">4862</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">16796</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">58786</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">208012</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">742900</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">2674440</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">9694845</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">35357670</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">129644790</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">477638700</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">1767263190</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">6564120420</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">24466267020</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">91482563640</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">343059613650</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">1289904147324</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">4861946401452</span><span style="COLOR: #000000">,&nbsp;<img src="http://www.cppblog.com/Images/dot.gif"><br>应用<br><br>　　我总结了一下，最典型的四类应用：（实质上却都一样，无非是递归等式的应用，就看你能不能分解问题写出递归式了）<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">.括号化问题。<br><br>　　矩阵链乘：&nbsp;P</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">a1&#215;a2&#215;a3&#215;&#8230;&#8230;&#215;an，依据乘法结合律，不改变其顺序，只用括号表示成对的乘积，试问有几种括号化的方案？(h(n)种)<br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">.出栈次序问题。<br><br>　　一个栈(无穷大)的进栈序列为1,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">,..n,有多少个不同的出栈序列</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000"><br>　　类似：<br>　　(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)有2n个人排成一行进入剧场。入场费5元。其中只有n个人有一张5元钞票，另外n人只有10元钞票，剧院无其它钞票，问有多少中方法使得只要有10元的人买票，售票处就有5元的钞票找零？(将持5元者到达视作将5元入栈，持10元者到达视作使栈中某5元出栈)<br>　　(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)在圆上选择2n个点,将这些点成对连接起来，使得所得到的n条线段不相交的方法数。<br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">.将多边行划分为三角形问题。<br><br>　　将一个凸多边形区域分成三角形区域的方法数</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000"><br>　　类似：一位大城市的律师在她住所以北n个街区和以东n个街区处工作。每天她走2n个街区去上班。如果她<br>　　从不穿越（但可以碰到）从家到办公室的对角线，那么有多少条可能的道路？<br>　　类似：在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">.给顶节点组成二叉树的问题。<br><br>　　给定N个节点，能构成多少种形状不同的二叉树？<br>　　(一定是二叉树</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br>　　先去一个点作为顶点,然后左边依次可以取0至N</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1个相对应的,右边是N</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1到0个,两两配对相乘,就是h(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">h(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;h(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">h(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;<img src="http://www.cppblog.com/Images/dot.gif">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;h(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)h(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">h(n))<br>　　（能构成h（N）个）</span></div>
<img src ="http://www.cppblog.com/MiYu/aggbug/122573.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-07 21:51 <a href="http://www.cppblog.com/MiYu/archive/2010/08/07/122573.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ HDU 2067 小兔的棋盘 ACM 2067 IN HDU </title><link>http://www.cppblog.com/MiYu/archive/2010/08/07/122569.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Sat, 07 Aug 2010 13:37:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/07/122569.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122569.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/07/122569.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122569.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122569.html</trackback:ping><description><![CDATA[<span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1>______________白白の屋</font></a><br><br>题目地址:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=2067">http://acm.hdu.edu.cn/showproblem.php?pid=2067</a><br>题目描述:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">Problem&nbsp;Description<br>小兔的叔叔从外面旅游回来给她带来了一个礼物，小兔高兴地跑回自己的房间，拆开一看是一个棋盘，小兔有所失望。不过没过几天发现了棋盘的好玩之处。从起点(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">，</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)走到终点(n,n)的最短路径数是C(2n,n),现在小兔又想如果不穿越对角线(但可接触对角线上的格点)，这样的路径数有多少</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">小兔想了很长时间都没想出来，现在想请你帮助小兔解决这个问题，对于你来说应该不难吧</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Input<br>每次输入一个数n(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">35</span><span style="COLOR: #000000">)，当n等于－1时结束输入。<br>&nbsp;<br><br>Output<br>对于每个输入数据输出路径数，具体格式看Sample。<br>&nbsp;<br><br>Sample&nbsp;Input<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">12</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Sample&nbsp;Output<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">12</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">416024</span></div>
</span><br>题目分析:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px">假设小兔的棋盘是 8 &#215; 8 的 ( 当然你也可以假设是其他 )。如下图:<br>箭头方向表示从该格子下一步能去的格子。因为不能穿越对角线，所有对角线上的格子只有进去的箭头，没有出来的箭头。<br><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/miyu/2067.jpg" width=241 height=241><br><br>观察上图你就可以发现，其实这是一张关于对角线对称的图。所有我们只要求一个方向的值，然后乘以2即可。<br>我们就拿下三角来考虑。不难发现，所有在0列上的格子，路径数都是 <span style="COLOR: red; FONT-SIZE: 12pt">1 </span>(只能从上面过来)。<br>而其他格子则都是由上、左两个方向过来，即:<span style="COLOR: red; FONT-SIZE: 14pt">f(i,&nbsp;j)&nbsp;=&nbsp;f(i&nbsp;-&nbsp;1,&nbsp;j)&nbsp;+&nbsp;f(i,&nbsp;j&nbsp;-&nbsp;1);<br></span>另外<span style="COLOR: red; FONT-SIZE: 14pt">f(i, i) = f(i, j - 1)&nbsp; 或者 <span style="COLOR: red; FONT-SIZE: 14pt">f(i, i) = f( i-1, j )&nbsp;</span>;<br></span></div>
<br>代码如下:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 14pt; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1>______________白白の屋</font></a></span><br><br>#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br>typedef&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;int64;<br>int64&nbsp;f[</span><span style="COLOR: #000000">37</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">37</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ca</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;N;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;cin&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;N&nbsp;,&nbsp;N&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;ca;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;i&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;N;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;i&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">][i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;N;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;i&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;j&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;i;&nbsp;j&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;N;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;j&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;i&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;j&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[i][j]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;f[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][j];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[i][j]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;f[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][j]&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;f[i][j</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d&nbsp;%d&nbsp;%I64d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;ca,&nbsp;N,&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;f[N</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][N]&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}<br></span></div>
<br>另外看别人的解题报告说这个是卡特兰数 (&nbsp;详细请查看&nbsp;<a href="http://www.cppblog.com/MiYu/archive/2010/08/07/122573.html">&lt;&lt;卡特兰数&gt;&gt;</a>&nbsp;&nbsp;), 其实现在还不理解, 分析如下:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 14pt; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">Catalan数。。<br>令h(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)＝</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,h(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">，catalan数满足递归式：<br>　　h(n)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;h(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">h(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">h(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">h(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;<img src="http://www.cppblog.com/Images/dot.gif">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;h(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)h(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)&nbsp;(其中n</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)<br>　　另类递归式：<br>　　h(n)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">((</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">))</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">h(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br>　　该递推关系的解为：<br>　　h(n)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">C(2n,n)</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;(n</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">,&#8230;)</span></div>
<br>附卡特兰代码:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 14pt; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;__int64&nbsp;a[</span><span style="COLOR: #000000">37</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">37</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">{</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">};<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i,j,n,t</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;a[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;a[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;a[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">37</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i][</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;j</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i][j]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">a[i][j</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">a[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][j];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i][i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">a[i][i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">a[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i][i]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">a[i][i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">a[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">n)</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">!=-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d&nbsp;%d&nbsp;%I64d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">t,n,a[n][n]);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}</span></div>
<img src ="http://www.cppblog.com/MiYu/aggbug/122569.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-07 21:37 <a href="http://www.cppblog.com/MiYu/archive/2010/08/07/122569.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ HDU 2068 RPG的错排 ACM 2068 IN HDU </title><link>http://www.cppblog.com/MiYu/archive/2010/08/06/122456.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Fri, 06 Aug 2010 08:00:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/06/122456.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122456.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/06/122456.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122456.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122456.html</trackback:ping><description><![CDATA[<span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1>______________白白の屋</font></a><br><br>题目地址:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=2068">http://acm.hdu.edu.cn/showproblem.php?pid=2068</a><br>题目描述:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">Problem&nbsp;Description<br>今年暑假杭电ACM集训队第一次组成女生队,其中有一队叫RPG,但做为集训队成员之一的野骆驼竟然不知道RPG三个人具体是谁谁。RPG给他机会让他猜猜，第一次猜：R是公主，P是草儿，G是月野兔；第二次猜：R是草儿，P是月野兔，G是公主；第三次猜：R是草儿，P是公主，G是月野兔；<img src="http://www.cppblog.com/Images/dot.gif"><img src="http://www.cppblog.com/Images/dot.gif">可怜的野骆驼第六次终于把RPG分清楚了。由于RPG的带动，做ACM的女生越来越多，我们的野骆驼想都知道她们，可现在有N多人，他要猜的次数可就多了，为了不为难野骆驼，女生们只要求他答对一半或以上就算过关，请问有多少组答案能使他顺利过关。<br>&nbsp;<br><br>Input<br>输入的数据里有多个case,每个case包括一个n，代表有几个女生，（n</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">25</span><span style="COLOR: #000000">）,&nbsp;n&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;0输入结束。<br>&nbsp;<br><br>Sample&nbsp;Input<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Sample&nbsp;Output<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">1</span></div>
</span><br><span style="COLOR: #ff6600">很明显的 错排 + 排列组合 的题目. 更多错排资料请点击 --&gt; &lt;&lt;&nbsp;<a href="http://www.cppblog.com/MiYu/archive/2010/08/08/122615.html">错排公式</a> &gt;&gt;<br><br>要猜对一半或一半以上, 那么就是从给出的 n 个人中 取出 小于或等于 n / 2 的人进行错排 , <br><br>因为题目问的是顺利通关的所有解, 所以最后需要累加 0 -&gt; n / 2 的错排方法.<br><br>错排公式</span> :&nbsp; <span style="COLOR: red">F (&nbsp;n ) = (&nbsp;n - 1&nbsp;) * (&nbsp;F(n-1) + F ( n - 2 )&nbsp;)</span> <br><br>代码如下 :<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 12pt; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">//MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1>______________白白の屋</font></a><br></span><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>typedef&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;int64;<br>int64&nbsp;Com&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;m&nbsp;)&nbsp; //&nbsp;取 C<sub>n </sub><sup>m 的 组合数</sup><br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;m&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int64&nbsp;up&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,down&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;m;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;i&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;up&nbsp;</span><span style="COLOR: #000000">*=</span><span style="COLOR: #000000">&nbsp;n&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;i;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;down&nbsp;</span><span style="COLOR: #000000">*=</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;up&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;down;<br>}<br>int64&nbsp;F[</span><span style="COLOR: #000000">14</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;{&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;};<br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setNum&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">14</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;i&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(&nbsp;i&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;)&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;(&nbsp;F[&nbsp;i&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;]&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;F[&nbsp;i&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;]&nbsp;);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>}<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;N;<br>&nbsp;&nbsp;&nbsp;&nbsp;int64&nbsp;sum;<br>&nbsp;&nbsp;&nbsp;&nbsp;setNum&nbsp;();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">N),&nbsp;N&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;N&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">&nbsp;i&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;Com&nbsp;(&nbsp;N&nbsp;,&nbsp;i&nbsp;)&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;F[i];&nbsp;&nbsp;&nbsp; // 从N中取i 个人&nbsp;的错排数<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%I64d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;sum&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span></div>
<br><br>
<img src ="http://www.cppblog.com/MiYu/aggbug/122456.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-06 16:00 <a href="http://www.cppblog.com/MiYu/archive/2010/08/06/122456.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>