﻿<?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++博客-CodePanada</title><link>http://www.cppblog.com/CodePanada/</link><description>panada 不是熊猫 胜似熊猫</description><language>zh-cn</language><lastBuildDate>Tue, 14 Apr 2026 22:21:34 GMT</lastBuildDate><pubDate>Tue, 14 Apr 2026 22:21:34 GMT</pubDate><ttl>60</ttl><item><title>用位操作实现的n皇后问题</title><link>http://www.cppblog.com/CodePanada/archive/2011/06/08/148239.html</link><dc:creator>熊猫呵呵</dc:creator><author>熊猫呵呵</author><pubDate>Tue, 07 Jun 2011 16:16:00 GMT</pubDate><guid>http://www.cppblog.com/CodePanada/archive/2011/06/08/148239.html</guid><wfw:comment>http://www.cppblog.com/CodePanada/comments/148239.html</wfw:comment><comments>http://www.cppblog.com/CodePanada/archive/2011/06/08/148239.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/CodePanada/comments/commentRss/148239.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CodePanada/services/trackbacks/148239.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; &nbsp; &nbsp;C语言是我大一时期专业课所学习的第一门语言，离现在差不多也有将近5年的时间。最近想重拾起来，买了一本Plauger大牛的&lt;&lt;The standard C library&gt;&gt;，简单翻了一下，觉得自己如井底之蛙一样。。。以前对C的理解只是皮毛，孰不知这门极其优秀的跨平台可移植的编译语言还有如此精彩的实现。
<div>&nbsp;&nbsp; &nbsp; &nbsp;前几天整理文档，发现了这段用C bit实现的N皇后算法，花了半天时间才把它搞明白。。大家都知道，n皇后的一般解法是回溯，要用一个二维数组表示棋盘，按逐行（列）进行解搜索，对于每个当前解都要进行判断，如成功则继续；失败则回溯。</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp;这段用bit实现的代码极其简明。只不过它只是用了一个一维的数组，按行搜索，将列上的、对象线上的限制归一。</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp;感兴趣的朋友可以看下：<a href="http://jsomers.com/nqueen_demo/nqueens.html">http://jsomers.com/nqueen_demo/nqueens.html&nbsp;</a>作者的方法跟下面的方法大同小异。</div>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #000000; ">#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; ">&nbsp;<br />
</span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stdlib.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
</span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">time.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
</span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;sum&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;upperlim&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 />
</span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;test(</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;&nbsp;row,&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;&nbsp;ld,&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;&nbsp;rd)&nbsp;<br />
</span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">{<br />
</span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">printf("%ld\t%ld\t%ld\n",row,ld,rd);<br />
</span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">printf("%ld\t",row);&nbsp;<br />
</span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">printf("\n%ld\n",upperlim);&nbsp;</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(row&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;upperlim)&nbsp;<br />
</span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;pos&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;upperlim&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">~</span><span style="color: #000000; ">(row</span><span style="color: #000000; ">|</span><span style="color: #000000; ">ld</span><span style="color: #000000; ">|</span><span style="color: #000000; ">rd);&nbsp;<br />
</span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">printf("%ld\n",pos);</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(pos</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)&nbsp;<br />
</span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br />
</span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;printf("%ld\n",pos);</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;p&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;pos&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">pos;&nbsp;<br />
</span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;pos&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;p;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">取得可以放皇后的最右边的列</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test(row&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;p,(ld&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;p)</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;(rd&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;p)</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />
</span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080; ">23</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">;&nbsp;<br />
</span><span style="color: #008080; ">24</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;<br />
</span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">27</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;&nbsp;<br />
</span><span style="color: #008080; ">28</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">;&nbsp;<br />
</span><span style="color: #008080; ">29</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">30</span>&nbsp;<span style="color: #000000; ">}&nbsp;<br />
</span><span style="color: #008080; ">31</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">32</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;&nbsp;argc,&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">argv[])&nbsp;<br />
</span><span style="color: #008080; ">33</span>&nbsp;<span style="color: #000000; ">{&nbsp;<br />
</span><span style="color: #008080; ">34</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time_t&nbsp;tm;&nbsp;<br />
</span><span style="color: #008080; ">35</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">16</span><span style="color: #000000; ">;&nbsp;<br />
</span><span style="color: #008080; ">36</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(argc&nbsp;&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)&nbsp;n&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;atoi(argv[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]);&nbsp;<br />
</span><span style="color: #008080; ">37</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tm&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;time(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);&nbsp;<br />
</span><span style="color: #008080; ">38</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">((n&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)</span><span style="color: #000000; ">||</span><span style="color: #000000; ">(n&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">32</span><span style="color: #000000; ">))&nbsp;<br />
</span><span style="color: #008080; ">39</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br />
</span><span style="color: #008080; ">40</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">只能计算1-32之间的皇后问题\n&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);&nbsp;<br />
</span><span style="color: #008080; ">41</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);&nbsp;<br />
</span><span style="color: #008080; ">42</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />
</span><span style="color: #008080; ">43</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d皇后\n&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,n);&nbsp;<br />
</span><span style="color: #008080; ">44</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%ld\t</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,upperlim);&nbsp;<br />
</span><span style="color: #008080; ">45</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;upperlim&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(upperlim&nbsp;</span><span style="color: #000000; ">&lt;&lt;</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;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">所有位都是1&nbsp;</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">46</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%ld\t</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,upperlim);&nbsp;<br />
</span><span style="color: #008080; ">47</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test(</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; ">0</span><span style="color: #000000; ">);&nbsp;<br />
</span><span style="color: #008080; ">48</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">共有%ld种排列,计算时间%d秒\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,sum,(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">)(time(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)</span><span style="color: #000000; ">-</span><span style="color: #000000; ">tm));&nbsp;<br />
</span><span style="color: #008080; ">49</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;system(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">pause</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
</span><span style="color: #008080; ">50</span>&nbsp;<span style="color: #000000; ">&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; ">;<br />
</span><span style="color: #008080; ">51</span>&nbsp;<span style="color: #000000; ">}&nbsp;</span></div>
</div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><br />
</div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><br />
</div><img src ="http://www.cppblog.com/CodePanada/aggbug/148239.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CodePanada/" target="_blank">熊猫呵呵</a> 2011-06-08 00:16 <a href="http://www.cppblog.com/CodePanada/archive/2011/06/08/148239.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]乱砍设计模式之一</title><link>http://www.cppblog.com/CodePanada/archive/2011/05/25/147069.html</link><dc:creator>熊猫呵呵</dc:creator><author>熊猫呵呵</author><pubDate>Tue, 24 May 2011 19:48:00 GMT</pubDate><guid>http://www.cppblog.com/CodePanada/archive/2011/05/25/147069.html</guid><wfw:comment>http://www.cppblog.com/CodePanada/comments/147069.html</wfw:comment><comments>http://www.cppblog.com/CodePanada/archive/2011/05/25/147069.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CodePanada/comments/commentRss/147069.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CodePanada/services/trackbacks/147069.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本系列的文章转载自：http://blog.csdn.net/junguo STRATEGY模式&#8212;&#8212;赵子龙单骑救主&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&...&nbsp;&nbsp;<a href='http://www.cppblog.com/CodePanada/archive/2011/05/25/147069.html'>阅读全文</a><img src ="http://www.cppblog.com/CodePanada/aggbug/147069.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CodePanada/" target="_blank">熊猫呵呵</a> 2011-05-25 03:48 <a href="http://www.cppblog.com/CodePanada/archive/2011/05/25/147069.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]乱砍设计模式(序)</title><link>http://www.cppblog.com/CodePanada/archive/2011/05/25/147068.html</link><dc:creator>熊猫呵呵</dc:creator><author>熊猫呵呵</author><pubDate>Tue, 24 May 2011 19:16:00 GMT</pubDate><guid>http://www.cppblog.com/CodePanada/archive/2011/05/25/147068.html</guid><wfw:comment>http://www.cppblog.com/CodePanada/comments/147068.html</wfw:comment><comments>http://www.cppblog.com/CodePanada/archive/2011/05/25/147068.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CodePanada/comments/commentRss/147068.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CodePanada/services/trackbacks/147068.html</trackback:ping><description><![CDATA[本系列的文章转载自：<a href="http://blog.csdn.net/junguo">http://blog.csdn.net/junguo</a><br />作者以诙谐生动的例子解释了一些设计模式。<span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; 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="text-align: left; line-height: 21px; font-family: verdana, sans-serif; font-size: 14px"> 
<p style="padding-bottom: 0px; margin: 1em 0px 0.5em; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="line-height: 21px; font-family: 宋体">有时候想知道偶然会为人生带来什么样的意义？作为一个怀疑论者，我对人生充满了疑虑，对于偶然所起的作用也不是那么确定。但还是可以总结一些自己并不确定的结论。大学期间，成天旷课的我，那天偶然上了一堂软件工程课（我不是计算机专业的，我们开这堂课本身就有些古怪）。那天老师不知道是一时兴起，还是早有准备，在下课前他在黑板上画了一个图，标注了学习计算机的进阶图。这堂偶然的课，给我带来了后来的失落和彷徨。</span></p>
<p style="padding-bottom: 0px; margin: 1em 0px 0.5em; padding-left: 0px; padding-right: 0px; padding-top: 0px"></p>
<p style="padding-bottom: 0px; margin: 1em 0px 0.5em; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="line-height: 21px"><span style="line-height: 21px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;</span><span style="line-height: 21px; font-family: 宋体">一个编程工具（</span><span style="line-height: 21px">VC,Delphi</span><span style="line-height: 21px; font-family: 宋体">）<br /></span><span style="line-height: 21px"><span style="line-height: 21px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="line-height: 21px; font-family: 宋体">一门编程语言（</span><span style="line-height: 21px">C</span><span style="line-height: 21px; font-family: 宋体">，</span><span style="line-height: 21px">Pascal</span><span style="line-height: 21px; font-family: 宋体">）</span></p>
<p style="padding-bottom: 0px; margin: 1em 0px 0.5em; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="line-height: 21px"><span style="line-height: 21px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="line-height: 21px; font-family: 宋体">常用软件的熟练使用<br /></span><span style="line-height: 21px"><span style="line-height: 21px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="line-height: 21px; font-family: 宋体">计算机硬件（说白了就是装机的水平）</span></p>
<p style="padding-bottom: 0px; margin: 1em 0px 0.5em; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="line-height: 21px"><span style="line-height: 21px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="line-height: 21px; font-family: 宋体">他提供的进阶图如上所示，他似乎没有说</span><span style="line-height: 21px">C</span><span style="line-height: 21px; font-family: 宋体">和</span><span style="line-height: 21px">Pascal</span><span style="line-height: 21px; font-family: 宋体">应该学到什么样子。而当时的我每天泡在图书馆或者宿舍里，看的是数据结构，编译原理一类的书。我为自己绘制的进阶曲线是学习计算机系得所有基础课程，然后考高级程序员。那时候对</span><span style="line-height: 21px">VC</span><span style="line-height: 21px; font-family: 宋体">等工具并不感兴趣，我觉得还是打好基础容易进阶。但听完这堂课后，我的思路被打断了，放弃了自己原有的理念，跑到书店买了一本</span><span style="line-height: 21px">VC</span><span style="line-height: 21px; font-family: 宋体">基础的书，那是我学生时代买的最贵的书（</span><span style="line-height: 21px">70</span><span style="line-height: 21px; font-family: 宋体">多或者</span><span style="line-height: 21px">80</span><span style="line-height: 21px; font-family: 宋体">多块，书借人了），书上都是一个一个的例子，其实学完后我都没弄明白</span><span style="line-height: 21px">MFC</span><span style="line-height: 21px; font-family: 宋体">是怎么回事。只是学会了拖动不同的控件，在界面上做出不同的效果。凭良心说，那本书译文的文笔不错，也挺适合入门的，但它确实是本不折不扣的破书（国外图书也不都是精品，垃圾也不少），在不懂</span><span style="line-height: 21px">C++</span><span style="line-height: 21px; font-family: 宋体">的情况下，它可以教会你在界面上拖拉的本事，屏蔽了你学习的路线。而我们老师的进阶图无疑也是一张误导图，编程还是以数据结构等内容为基础的，没有了基础，你也就没有了前进的依仗。经过多年的失落彷徨，终于感觉找到了入门的通道。我也想总结一幅进阶图，但我发现自己总结不出来。庞庞杂杂接触了太多的东西：汇编，破解，操作系统，</span><span style="line-height: 21px">C++</span><span style="line-height: 21px; font-family: 宋体">，</span><span style="line-height: 21px">ASP</span><span style="line-height: 21px; font-family: 宋体">，</span><span style="line-height: 21px">MFC</span><span style="line-height: 21px; font-family: 宋体">，</span><span style="line-height: 21px">COM</span><span style="line-height: 21px; font-family: 宋体">，</span><span style="line-height: 21px">ATL</span><span style="line-height: 21px; font-family: 宋体">，</span><span style="line-height: 21px">VB</span><span style="line-height: 21px; font-family: 宋体">，</span><span style="line-height: 21px">STL</span><span style="line-height: 21px; font-family: 宋体">，数据库；但接触的东西都没有到精通的地步，只是感觉现在理解东西没有以前那么复杂了，但为什么会这样，我自己也说不清楚。只是隐隐约约感觉理解这些东西和汇编有些关系，但这些都是在我单纯学习汇编时候并没有感觉到的。我如今也只是处于从初级向中级攀升的阶段，真要搞出一个进阶路线，可能效果就和我们老师的进阶图一样只能误人子弟了。所以如今放弃了这方面的努力，也许将来有一天我会去做。如今我想做的就是提供给那些和我一样在从初级向中级攀升的人们一些共同感兴趣的话题。而设计模式绝对是这样一个话题，设计模式是帮助你真正理解</span><span style="line-height: 21px">OO</span><span style="line-height: 21px; font-family: 宋体">设计的一把钥匙，也许只有它能帮助你真正进入</span><span style="line-height: 21px">OO</span><span style="line-height: 21px; font-family: 宋体">设计之门。在没接触设计模式之前，对于</span><span style="line-height: 21px">OO</span><span style="line-height: 21px; font-family: 宋体">只知其形，不知其意。很多</span><span style="line-height: 21px">OO</span><span style="line-height: 21px; font-family: 宋体">设计的原则，不知道我买的那本巨著《</span><span style="line-height: 21px">C++ Primer</span><span style="line-height: 21px; font-family: 宋体">》中有没有，反正我是一条也没记住。如果你觉得你懂了面向对象的基本原理，懂得了虚函数，需要继续紧阶，那么我们可以一起探讨这里谈到的设计模式。</span></p>
<p style="padding-bottom: 0px; margin: 1em 0px 0.5em; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="line-height: 21px"><span style="line-height: 21px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>GOF</span><span style="line-height: 21px; font-family: 宋体">出的《设计模式》买了很长时间了，翻看了也不下三篇，但每次总感觉收获不大。虽被众人奉为经典，但那本书不适合我，写的太过抽象，没有完整的例子，每次看过都没留下多少印象。又是一个偶然，给我带来了惊喜。我在网上找到了一份电子版的《</span><span style="line-height: 21px">Head First Design Patterns</span><span style="line-height: 21px; font-family: 宋体">》，尽管只有第三章，但我发现这本书文笔清新，事例翔实，以前看多次没记住的东西，这儿看一次就留下了深刻的印象，实是一本入门的好书。所以豪不犹豫买了本纸版的，不过如今该书只有影印版，但并不影响阅读。以我大学英语四级没过的水平都可以基本看懂这本书，我想搞计算机的应该都不成问题。</span></p>
<p style="padding-bottom: 0px; margin: 1em 0px 0.5em; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="line-height: 21px"><span style="line-height: 21px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="line-height: 21px; font-family: 宋体">刚看到这本书的时候，第一个想法是自己能不能把它翻译一下。与大家共享，但后来想想版权什么的东西，自己并不清楚。加之文笔拙劣，怕毁了原文的意境，所以放弃了这个念头（毕竟我不是人民教师）。但总感觉有些失落，那就自己写吧，把我能理解的总结出来，配以我想到例子。经过这么一番折腾，也帮助自己加深理解，因为看书的时候，还是会忽略太多的细节，只有经过了自己的手，才会抠出很多容易忽略的东西。这就是我写这个系列的原因了。但也希望有同样兴趣的同仁共同讨论了。</span></p>
<p style="padding-bottom: 0px; margin: 1em 0px 0.5em; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="line-height: 21px"><span style="line-height: 21px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="line-height: 21px; font-family: 宋体">冠以乱砍的名字，是因为我不想把技术的东西搞得太枯燥。尽量加一些自己感兴趣的内容进去，呵呵，有同样爱好的同仁，我们也可以一起讨论。但对于技术的内容，我还是尽最大的努力做到正确表述。</span></p>
<p style="padding-bottom: 0px; margin: 1em 0px 0.5em; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="line-height: 21px"><span style="line-height: 21px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="line-height: 21px; font-family: 宋体">好了，要说的说完了。但声明一下，今天看到自己以前写的一篇文章被转载，但被斩头去尾，还删除了署名。虽然不是太在意，但还是感觉不舒服。所以希望有仁兄要转载的话，请保留署名；不要删除任何内容，如果你不喜欢我的废话，那就不要转了。</span></p></span></span><br /><br /><img src ="http://www.cppblog.com/CodePanada/aggbug/147068.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CodePanada/" target="_blank">熊猫呵呵</a> 2011-05-25 03:16 <a href="http://www.cppblog.com/CodePanada/archive/2011/05/25/147068.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]5个简单的方法 带给你平静的心情</title><link>http://www.cppblog.com/CodePanada/archive/2011/05/20/146801.html</link><dc:creator>熊猫呵呵</dc:creator><author>熊猫呵呵</author><pubDate>Fri, 20 May 2011 03:02:00 GMT</pubDate><guid>http://www.cppblog.com/CodePanada/archive/2011/05/20/146801.html</guid><wfw:comment>http://www.cppblog.com/CodePanada/comments/146801.html</wfw:comment><comments>http://www.cppblog.com/CodePanada/archive/2011/05/20/146801.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CodePanada/comments/commentRss/146801.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CodePanada/services/trackbacks/146801.html</trackback:ping><description><![CDATA[<font color="#002c99">以下内容转载自互联网。<br /></font>
<p><span style="font-size: 16px">当向听众解释压力管理的时候，讲师拿起一杯水问道：这杯水有多重？20克到500克众说纷纭。</span></p>
<p><span style="font-size: 16px">讲师回答说：实际有多重并不重要，这要看我拿着它的时间。一分钟，没有问题。如果一个小时呢，我的右臂就会疼痛。再进一步，一天，你应该给我叫救护车了。当然每种情况下杯子的重量是相同的，但是我拿的越久，它就显得越沉。</span></p>
<p><span style="font-size: 16px">他继续说道：这就像压力管理，<strong>如果总是怀揣沉重的负担，随着压力越来越大，迟早我们会崩溃掉。</strong></span></p>
<p><span style="font-size: 16px">正如这杯水一样，你需要放下它休息一下，调整自己，继续前行。</span></p>
<p><span style="font-size: 16px">所以，今晚在各位回家之前，放下工作上的负担。不要把它带到家里去，你可以明天继续肩负。无论你背负怎样的负担，如果可能，暂时忘掉它们。</span></p>
<p><span style="font-size: 16px"><strong>这里有5个简单的方法，能为你带来平静的心情。<span style="font-weight: normal"><strong> </strong></span></strong></span></p>
<p><span style="font-size: 16px"><strong></strong><strong></strong></span></p>
<p><span style="font-size: 16px"><strong></strong></span></p>
<p>&nbsp;</p><strong><span style="font-size: 16px"><br /></span></strong>
<p>&nbsp;</p>
<p><span style="font-size: 16px"><strong>1.将最艰巨的任务放在早晨。</strong></span></p>
<p><span style="font-size: 16px">人们总是倾向于用简单的任务开始一天的工作，别这样做。将艰巨的任务拖到后面就像你伸开手臂举着杯子，开始没什么，但是随着时间的推移，你会很快感觉到压力。将最艰巨的任务放在早晨，这样你就能享受到效率提升及一天中剩下时间的平静带来的惬意。</span></p>
<p><span style="font-size: 16px"><strong>2.放开你不能控制的事情</strong></span></p>
<p><span style="font-size: 16px">你和朋友计划好外出，但是最后关头下雨了，这时你会怎么想？</span></p>
<p><span style="font-size: 16px">有些人会因此而失望、愤怒，然后跟周围的人抱怨：这不公平，为什么这种事总是让我遇到！</span></p>
<p><span style="font-size: 16px">没什么可抱怨的，雨不会因为你抱怨而停止，老天才不在乎。这种情况下我会到公园里散步（因为雨也很有魅力），或者躺在床上一边读Terry Pratchett的书，一边听着雨水打在窗户上的声音。</span></p>
<p><span style="font-size: 16px">将你能掌控的事情做到最好，但也不用太在意不能左右的事情。</span></p>
<p><span style="font-size: 16px"><strong>3.不必担心别人的想法</strong></span></p>
<p><span style="font-size: 16px">我曾经对自己的舞技感到非常羞愧，因此很少与朋友外出。即使出去我也不跳舞，仅仅笨笨的站在一边。因为我担心别人嘲笑。</span></p>
<p><span style="font-size: 16px">然而有一天我在学校里重重的下了决心，决定要改变这一现状。下一次和朋友们出去的时候，我走进了舞池，旁若无人的跳舞。有意思的是并没有人注意到我。实际上他们还想看我再跳，因为觉得我有意思。</span></p>
<p><span style="font-size: 16px">不要担心别怎么看你，可能他们还在担心别人会怎么看他们呢</span></p>
<p><span style="font-size: 16px"><strong>4.列出3件你喜爱的事情</strong></span></p>
<p><span style="font-size: 16px">我是在Positivity Blog中的The Plague of Happiness Ever After文章中第一次和读者分享这个技巧的。</span></p>
<p><span style="font-size: 16px">仅仅是列出生活中你喜爱的3件简单的事情，如：这个屋子我最喜欢的3个地方，或这个星期我最喜欢的3件事，或是其他的什么。</span></p>
<p><span style="font-size: 16px">在你堵车或排队而感到无聊的时候这个技巧就会显得尤为有用，你能立即把无聊的感觉一扫而光，取而代之的是幸福和平静。</span></p>
<p><span style="font-size: 16px"><strong>5 走向窗前望向窗外，深呼吸。</strong></span></p>
<p><span style="font-size: 16px">我从禅师Mary Jaksch那里学到的这个技巧。仅仅是走向窗前望向窗外，深呼吸。将注意力集中到这次呼吸上并忘掉其他的一切。这听起来及其简单，但是你很难想象这样做能立即给你带来平静的心情。</span></p>
<p><span style="font-size: 16px">这也是最后一个技巧，你可以在读完这篇文章后马上试一试。忘掉一切，体会空气在肺里的进出。</span></p><br /><br /> <img src ="http://www.cppblog.com/CodePanada/aggbug/146801.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CodePanada/" target="_blank">熊猫呵呵</a> 2011-05-20 11:02 <a href="http://www.cppblog.com/CodePanada/archive/2011/05/20/146801.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>大整数算法之gcd(最大公约数)</title><link>http://www.cppblog.com/CodePanada/archive/2011/05/19/146743.html</link><dc:creator>熊猫呵呵</dc:creator><author>熊猫呵呵</author><pubDate>Thu, 19 May 2011 08:18:00 GMT</pubDate><guid>http://www.cppblog.com/CodePanada/archive/2011/05/19/146743.html</guid><wfw:comment>http://www.cppblog.com/CodePanada/comments/146743.html</wfw:comment><comments>http://www.cppblog.com/CodePanada/archive/2011/05/19/146743.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CodePanada/comments/commentRss/146743.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CodePanada/services/trackbacks/146743.html</trackback:ping><description><![CDATA[欧几里德算法(Euclid)阐述了一种gcd算法。gcd(greatest common divisor)，简言之，我们想求gcd(x,y)，假设(x&gt;y)，如果存在下式:x =&nbsp; q*y + r，那么则有gcd(x,y) =&nbsp;gcd(y,r)&nbsp;，其实上式也称为<span style="color: red">gcd递归定理</span>，即gcd(a,b)&nbsp;= gcd (b,a mod&nbsp; b)。<br />这个递归式看似很简单。实则它还是很值得推敲的，首先，它怎么证明？其次，该算法的运行时间为如何？<br />在密码学中，欧几里德算法有着相当广泛的应用，譬如求乘法逆元，大整数分解等等。。<br />在&lt;&lt;编程之美&gt;&gt;一书中，给出了不少gcd算法的简单实现。因为gcd算法的实现是递归，所以要特别注意栈溢出。先做个标记，以后会把栈详细分析一下。<br />&nbsp;最简单的gcd算法：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<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"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080">1</span><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;gcd(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;y)<br /></span><span style="color: #008080">2</span><span style="color: #000000"><img id="Codehighlighter1_22_127_Open_Image" onclick="this.style.display='none'; Codehighlighter1_22_127_Open_Text.style.display='none'; Codehighlighter1_22_127_Closed_Image.style.display='inline'; Codehighlighter1_22_127_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_22_127_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_22_127_Closed_Text.style.display='none'; Codehighlighter1_22_127_Open_Image.style.display='inline'; Codehighlighter1_22_127_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_22_127_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_22_127_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(y&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: #0000ff">return</span><span style="color: #000000">&nbsp;x;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(x&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;y)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;gcd(y,x);&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">5</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;gcd(y,&nbsp;x</span><span style="color: #000000">%</span><span style="color: #000000">y);&nbsp;<br /></span><span style="color: #008080">6</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000">&nbsp;</span></div><br />ACM中常用的gcd算法： 
<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"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080">1</span><img id="Codehighlighter1_21_58_Open_Image" onclick="this.style.display='none'; Codehighlighter1_21_58_Open_Text.style.display='none'; Codehighlighter1_21_58_Closed_Image.style.display='inline'; Codehighlighter1_21_58_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_21_58_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_21_58_Closed_Text.style.display='none'; Codehighlighter1_21_58_Open_Image.style.display='inline'; Codehighlighter1_21_58_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;gcd(</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;b)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_21_58_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_21_58_Open_Text"><span style="color: #000000">{&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;a&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;b&nbsp;:&nbsp;gcd(b&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;a,&nbsp;a);&nbsp;}</span></span><span style="color: #000000">&nbsp;</span></div><br />经过优化的gcd算法(分成奇偶两种情况)： 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px">
<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">&nbsp;1</span><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;gcd(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;y&nbsp;)<br /></span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img id="Codehighlighter1_22_543_Open_Image" onclick="this.style.display='none'; Codehighlighter1_22_543_Open_Text.style.display='none'; Codehighlighter1_22_543_Closed_Image.style.display='inline'; Codehighlighter1_22_543_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_22_543_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_22_543_Closed_Text.style.display='none'; Codehighlighter1_22_543_Open_Image.style.display='inline'; Codehighlighter1_22_543_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_22_543_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_22_543_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(x&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;y)&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;gcd(y,x);&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;x&gt;y</span><span style="color: #008000"><br /></span><span style="color: #008080">&nbsp;4</span><span style="color: #008000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;y&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: #0000ff">return</span><span style="color: #000000">&nbsp;x;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;if&nbsp;y=0,&nbsp;x&nbsp;is&nbsp;GCD&nbsp;</span><span style="color: #008000"><br /></span><span style="color: #008080">&nbsp;5</span><span style="color: #008000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img id="Codehighlighter1_121_541_Open_Image" onclick="this.style.display='none'; Codehighlighter1_121_541_Open_Text.style.display='none'; Codehighlighter1_121_541_Closed_Image.style.display='inline'; Codehighlighter1_121_541_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_121_541_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_121_541_Closed_Text.style.display='none'; Codehighlighter1_121_541_Open_Image.style.display='inline'; Codehighlighter1_121_541_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_121_541_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_121_541_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;</span><span style="color: #000000">!</span><span style="color: #000000">(x</span><span style="color: #000000">%</span><span style="color: #000000">2</span><span style="color: #000000">)&nbsp;)<br /></span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img id="Codehighlighter1_148_342_Open_Image" onclick="this.style.display='none'; Codehighlighter1_148_342_Open_Text.style.display='none'; Codehighlighter1_148_342_Closed_Image.style.display='inline'; Codehighlighter1_148_342_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_148_342_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_148_342_Closed_Text.style.display='none'; Codehighlighter1_148_342_Open_Image.style.display='inline'; Codehighlighter1_148_342_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_148_342_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_148_342_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;</span><span style="color: #000000">!</span><span style="color: #000000">(y</span><span style="color: #000000">%</span><span style="color: #000000">2</span><span style="color: #000000">)&nbsp;)&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">x,y&nbsp;both&nbsp;even</span><span style="color: #008000"><br /></span><span style="color: #008080">10</span><span style="color: #008000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&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">2</span><span style="color: #000000">*</span><span style="color: #000000">gcd(x&nbsp;</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;y&nbsp;</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;x&nbsp;is&nbsp;even,&nbsp;y&nbsp;is&nbsp;odd</span><span style="color: #008000"><br /></span><span style="color: #008080">12</span><span style="color: #008000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;gcd(x&nbsp;</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;y&nbsp;);&nbsp;&nbsp;<br /></span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /></span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;<br /></span><span style="color: #008080">15</span><span style="color: #000000"><img id="Codehighlighter1_362_535_Open_Image" onclick="this.style.display='none'; Codehighlighter1_362_535_Open_Text.style.display='none'; Codehighlighter1_362_535_Closed_Image.style.display='inline'; Codehighlighter1_362_535_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_362_535_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_362_535_Closed_Text.style.display='none'; Codehighlighter1_362_535_Open_Image.style.display='inline'; Codehighlighter1_362_535_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_362_535_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_362_535_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;</span><span style="color: #000000">!</span><span style="color: #000000">(y</span><span style="color: #000000">%</span><span style="color: #000000">2</span><span style="color: #000000">)&nbsp;)&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;x&nbsp;is&nbsp;&nbsp;odd,&nbsp;&nbsp;y&nbsp;is&nbsp;even</span><span style="color: #008000"><br /></span><span style="color: #008080">17</span><span style="color: #008000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;gcd(x,&nbsp;y&nbsp;</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);<br /></span><span style="color: #008080">18</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;x,&nbsp;y&nbsp;both&nbsp;odd</span><span style="color: #008000"><br /></span><span style="color: #008080">19</span><span style="color: #008000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;gcd(y,x</span><span style="color: #000000">-</span><span style="color: #000000">y);&nbsp;<br /></span><span style="color: #008080">20</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /></span><span style="color: #008080">21</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /></span><span style="color: #008080">22</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br /></span><span style="color: #008080">23</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span></div><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080"></span></div><img src ="http://www.cppblog.com/CodePanada/aggbug/146743.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CodePanada/" target="_blank">熊猫呵呵</a> 2011-05-19 16:18 <a href="http://www.cppblog.com/CodePanada/archive/2011/05/19/146743.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>大整数算法之求阶乘</title><link>http://www.cppblog.com/CodePanada/archive/2011/05/19/146740.html</link><dc:creator>熊猫呵呵</dc:creator><author>熊猫呵呵</author><pubDate>Thu, 19 May 2011 03:45:00 GMT</pubDate><guid>http://www.cppblog.com/CodePanada/archive/2011/05/19/146740.html</guid><wfw:comment>http://www.cppblog.com/CodePanada/comments/146740.html</wfw:comment><comments>http://www.cppblog.com/CodePanada/archive/2011/05/19/146740.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CodePanada/comments/commentRss/146740.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CodePanada/services/trackbacks/146740.html</trackback:ping><description><![CDATA[这几天闲暇时研究了一些关于大整数计算和存储的算法。关于这些方法，无非是用数组代替内置类型对大整数进行存储，然后进行适当的运算技巧进行并得到结果。下面是一个求阶乘的算法。n! = n*(n-1)*(n-2)*...*2
<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">&nbsp;1</span><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">#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 /></span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /></span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img id="Codehighlighter1_53_55_Open_Image" onclick="this.style.display='none'; Codehighlighter1_53_55_Open_Text.style.display='none'; Codehighlighter1_53_55_Closed_Image.style.display='inline'; Codehighlighter1_53_55_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_53_55_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_53_55_Closed_Text.style.display='none'; Codehighlighter1_53_55_Open_Image.style.display='inline'; Codehighlighter1_53_55_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif">unsigned&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;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;fac[</span><span style="color: #000000">2570</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_53_55_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_53_55_Open_Text"><span style="color: #000000">{</span><span style="color: #000000">0</span><span style="color: #000000">}</span></span><span style="color: #000000">,low_bit,multiplicand,carry_bit&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /></span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img id="Codehighlighter1_93_125_Open_Image" onclick="this.style.display='none'; Codehighlighter1_93_125_Open_Text.style.display='none'; Codehighlighter1_93_125_Closed_Image.style.display='inline'; Codehighlighter1_93_125_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_93_125_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_93_125_Closed_Text.style.display='none'; Codehighlighter1_93_125_Open_Image.style.display='inline'; Codehighlighter1_93_125_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_93_125_Closed_Text">/**/</span><span id="Codehighlighter1_93_125_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;计算阶乘&nbsp;m*(m-1)*(m-2)*<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />*n&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;factorial(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;m,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n)<br /></span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img id="Codehighlighter1_156_913_Open_Image" onclick="this.style.display='none'; Codehighlighter1_156_913_Open_Text.style.display='none'; Codehighlighter1_156_913_Closed_Image.style.display='inline'; Codehighlighter1_156_913_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_156_913_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_156_913_Closed_Text.style.display='none'; Codehighlighter1_156_913_Open_Image.style.display='inline'; Codehighlighter1_156_913_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_156_913_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_156_913_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;carry_bit&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /></span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;multiplicand&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;m;<br /></span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">分离被乘数m，a[1]放个位，a[2]放10位<img src="http://www.cppblog.com/Images/dot.gif"  alt="" /><img src="http://www.cppblog.com/Images/dot.gif"  alt="" />&nbsp;</span><span style="color: #008000"><br /></span><span style="color: #008080">10</span><span style="color: #008000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(multiplicand)<br /></span><span style="color: #008080">11</span><span style="color: #000000"><img id="Codehighlighter1_269_396_Open_Image" onclick="this.style.display='none'; Codehighlighter1_269_396_Open_Text.style.display='none'; Codehighlighter1_269_396_Closed_Image.style.display='inline'; Codehighlighter1_269_396_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_269_396_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_269_396_Closed_Text.style.display='none'; Codehighlighter1_269_396_Open_Image.style.display='inline'; Codehighlighter1_269_396_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_269_396_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_269_396_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">12</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;low_bit</span><span style="color: #000000">++</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">fac数组的第0位不用&nbsp;</span><span style="color: #008000"><br /></span><span style="color: #008080">13</span><span style="color: #008000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fac[low_bit]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;multiplicand</span><span style="color: #000000">%</span><span style="color: #000000">10</span><span style="color: #000000">;<br /></span><span style="color: #008080">14</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;multiplicand&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;multiplicand</span><span style="color: #000000">/</span><span style="color: #000000">10</span><span style="color: #000000">;<br /></span><span style="color: #008080">15</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br /></span><span style="color: #008080">16</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;multiplicator&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">&nbsp;;&nbsp;multiplicator&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;n&nbsp;;&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">multiplicator)<br /></span><span style="color: #008080">17</span><span style="color: #000000"><img id="Codehighlighter1_478_904_Open_Image" onclick="this.style.display='none'; Codehighlighter1_478_904_Open_Text.style.display='none'; Codehighlighter1_478_904_Closed_Image.style.display='inline'; Codehighlighter1_478_904_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_478_904_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_478_904_Closed_Text.style.display='none'; Codehighlighter1_478_904_Open_Image.style.display='inline'; Codehighlighter1_478_904_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_478_904_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_478_904_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">18</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;carry_bit&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;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">carry_bit表示进位&nbsp;</span><span style="color: #008000"><br /></span><span style="color: #008080">19</span><span style="color: #008000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</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;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;;&nbsp;j&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;low_bit&nbsp;;&nbsp;</span><span style="color: #000000">++</span><span style="color: #000000">j)<br /></span><span style="color: #008080">20</span><span style="color: #000000"><img id="Codehighlighter1_579_729_Open_Image" onclick="this.style.display='none'; Codehighlighter1_579_729_Open_Text.style.display='none'; Codehighlighter1_579_729_Closed_Image.style.display='inline'; Codehighlighter1_579_729_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_579_729_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_579_729_Closed_Text.style.display='none'; Codehighlighter1_579_729_Open_Image.style.display='inline'; Codehighlighter1_579_729_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_579_729_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_579_729_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">21</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fac[j]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;fac[j]</span><span style="color: #000000">*</span><span style="color: #000000">multiplicator&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;carry_bit;<br /></span><span style="color: #008080">22</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;carry_bit&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;fac[j]&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">;<br /></span><span style="color: #008080">23</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fac[j]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;fac[j]&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">24</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br /></span><span style="color: #008080">25</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(carry_bit)<br /></span><span style="color: #008080">26</span><span style="color: #000000"><img id="Codehighlighter1_767_897_Open_Image" onclick="this.style.display='none'; Codehighlighter1_767_897_Open_Text.style.display='none'; Codehighlighter1_767_897_Closed_Image.style.display='inline'; Codehighlighter1_767_897_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_767_897_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_767_897_Closed_Text.style.display='none'; Codehighlighter1_767_897_Open_Image.style.display='inline'; Codehighlighter1_767_897_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_767_897_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_767_897_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">27</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;low_bit</span><span style="color: #000000">++</span><span style="color: #000000">;<br /></span><span style="color: #008080">28</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fac[low_bit]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;carry_bit&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">;<br /></span><span style="color: #008080">29</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;carry_bit</span><span style="color: #000000">=</span><span style="color: #000000">carry_bit&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">;<br /></span><span style="color: #008080">30</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /></span><span style="color: #008080">31</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /></span><span style="color: #008080">32</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">33</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br /></span><span style="color: #008080">34</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /></span><span style="color: #008080">35</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br /></span><span style="color: #008080">36</span><span style="color: #000000"><img id="Codehighlighter1_927_1078_Open_Image" onclick="this.style.display='none'; Codehighlighter1_927_1078_Open_Text.style.display='none'; Codehighlighter1_927_1078_Closed_Image.style.display='inline'; Codehighlighter1_927_1078_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_927_1078_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_927_1078_Closed_Text.style.display='none'; Codehighlighter1_927_1078_Open_Image.style.display='inline'; Codehighlighter1_927_1078_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_927_1078_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_927_1078_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">37</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;factorial(</span><span style="color: #000000">40</span><span style="color: #000000">,</span><span style="color: #000000">2</span><span style="color: #000000">);<br /></span><span style="color: #008080">38</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;index&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;low_bit&nbsp;;&nbsp;index</span><span style="color: #000000">&gt;=</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;;&nbsp;index</span><span style="color: #000000">--</span><span style="color: #000000">)<br /></span><span style="color: #008080">39</span><span style="color: #000000"><img id="Codehighlighter1_1004_1047_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1004_1047_Open_Text.style.display='none'; Codehighlighter1_1004_1047_Closed_Image.style.display='inline'; Codehighlighter1_1004_1047_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_1004_1047_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1004_1047_Closed_Text.style.display='none'; Codehighlighter1_1004_1047_Open_Image.style.display='inline'; Codehighlighter1_1004_1047_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1004_1047_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1004_1047_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">40</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">%d</span><span style="color: #000000">"</span><span style="color: #000000">,fac[index]);<br /></span><span style="color: #008080">41</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /></span><span style="color: #008080">42</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;getchar();<br /></span><span style="color: #008080">43</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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><span style="color: #008080">44</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br /></span><span style="color: #008080">45</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span></div><br /><br /><br />结果为：815915283247897734345611269596115894272000000000<br /><br />前一阵子研究python时，对它的长整数那块颇感兴趣，因为在python中是有&#8220;无限精度&#8221;的整数一说的，有空要拿它的源码来学习一下。<br /><br /><br /><br /> <img src ="http://www.cppblog.com/CodePanada/aggbug/146740.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CodePanada/" target="_blank">熊猫呵呵</a> 2011-05-19 11:45 <a href="http://www.cppblog.com/CodePanada/archive/2011/05/19/146740.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>又是一年答辩时</title><link>http://www.cppblog.com/CodePanada/archive/2011/05/19/146735.html</link><dc:creator>熊猫呵呵</dc:creator><author>熊猫呵呵</author><pubDate>Thu, 19 May 2011 03:02:00 GMT</pubDate><guid>http://www.cppblog.com/CodePanada/archive/2011/05/19/146735.html</guid><wfw:comment>http://www.cppblog.com/CodePanada/comments/146735.html</wfw:comment><comments>http://www.cppblog.com/CodePanada/archive/2011/05/19/146735.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CodePanada/comments/commentRss/146735.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CodePanada/services/trackbacks/146735.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;时间总是在不知不觉中消逝，这句话是句废话。可是，研三的师兄师姐们就要毕业答辩了，说起来有些许伤感。一是为他们的离校，而是为自己的仅剩的一年学校生活。肯定不会去读博了，因为已然看透了许多事情。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;孤单的奋战。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一篇随笔，当做是在cppblog的首篇文章吧。<img src ="http://www.cppblog.com/CodePanada/aggbug/146735.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CodePanada/" target="_blank">熊猫呵呵</a> 2011-05-19 11:02 <a href="http://www.cppblog.com/CodePanada/archive/2011/05/19/146735.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>