﻿<?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++博客-ArcTan-文章分类-ACM-数学</title><link>http://www.cppblog.com/ArcTan/category/19168.html</link><description>dfs</description><language>zh-cn</language><lastBuildDate>Thu, 16 Aug 2012 14:14:41 GMT</lastBuildDate><pubDate>Thu, 16 Aug 2012 14:14:41 GMT</pubDate><ttl>60</ttl><item><title>hdu 2971 (线性变换-矩阵乘法)</title><link>http://www.cppblog.com/ArcTan/articles/186628.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Wed, 08 Aug 2012 01:41:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/186628.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/186628.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/186628.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/186628.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/186628.html</trackback:ping><description><![CDATA[<a href="http://acm.hdu.edu.cn/showproblem.php?pid=2971">http://acm.hdu.edu.cn/showproblem.php?pid=2971</a><br /><br />对于：f[n]=a*f[n-1]+b*f[n-2]....这类线性变换，构造变换矩阵，用矩阵乘法来做。<br /><br />一般数会很大，结果mod一个整数。这里要注意变换矩阵中可能存在负数，需要求出关于mod的逆元来运算。<br /><br />总结：线性变换 矩阵乘法 TLE处理<br /><br /><div><img src="data:image/png;base64,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" alt="" /></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #0000FF; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; ">&nbsp;std;<br /><br /></span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;c,n;<br /></span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;mod;<br /></span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;mtx[</span><span style="color: #000000; ">5</span><span style="color: #000000; ">][</span><span style="color: #000000; ">5</span><span style="color: #000000; ">];<br /></span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;e[</span><span style="color: #000000; ">5</span><span style="color: #000000; ">][</span><span style="color: #000000; ">5</span><span style="color: #000000; ">];<br /></span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;tmp[</span><span style="color: #000000; ">5</span><span style="color: #000000; ">][</span><span style="color: #000000; ">5</span><span style="color: #000000; ">];<br /></span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;r[</span><span style="color: #000000; ">5</span><span style="color: #000000; ">];<br /></span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;temp[</span><span style="color: #000000; ">5</span><span style="color: #000000; ">];<br /><br /><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;init()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;mtx[</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; ">1</span><span style="color: #000000; ">;mtx[</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; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;mtx[</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; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;mtx[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">][</span><span style="color: #000000; ">3</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;mtx[</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; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;mtx[</span><span style="color: #000000; ">3</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; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;mtx[</span><span style="color: #000000; ">3</span><span style="color: #000000; ">][</span><span style="color: #000000; ">3</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;mtx[</span><span style="color: #000000; ">3</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; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;mtx[</span><span style="color: #000000; ">4</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; ">0</span><span style="color: #000000; ">;mtx[</span><span style="color: #000000; ">4</span><span style="color: #000000; ">][</span><span style="color: #000000; ">3</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;mtx[</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; ">=</span><span style="color: #000000; ">mtx[</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; ">=</span><span style="color: #000000; ">4</span><span style="color: #000000; ">*</span><span style="color: #000000; ">c</span><span style="color: #000000; ">*</span><span style="color: #000000; ">c&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;mod;<br />&nbsp;&nbsp;&nbsp;&nbsp;mtx[</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; ">=</span><span style="color: #000000; ">mtx[</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; ">(mod</span><span style="color: #000000; ">-</span><span style="color: #000000; ">4</span><span style="color: #000000; ">*</span><span style="color: #000000; ">c&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;mod)&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;mod;<br />&nbsp;&nbsp;&nbsp;&nbsp;mtx[</span><span style="color: #000000; ">4</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; ">mod</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;mtx[</span><span style="color: #000000; ">4</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; ">2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">c&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;mod;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;;<br />}<br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;matrix_mul()<br />{<br />&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;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">4</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">++</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; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;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; ">4</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;tmp[i][j]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">mtx[i][j];<br />&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;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">4</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">++</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; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;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; ">4</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;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mtx[i][j]</span><span style="color: #000000; ">=</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;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;k</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;k</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">4</span><span style="color: #000000; ">;k</span><span style="color: #000000; ">++</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;mtx[i][j]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(mtx[i][j]</span><span style="color: #000000; ">+</span><span style="color: #000000; ">tmp[i][k]</span><span style="color: #000000; ">*</span><span style="color: #000000; ">tmp[k][j])&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;mod;<br /><br />&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;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;;<br />}<br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{<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(</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);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(t</span><span style="color: #000000; ">--</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%lld%lld%lld</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">c,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">n,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">mod);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(c</span><span style="color: #000000; ">*</span><span style="color: #000000; ">c</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;mod;r[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">c</span><span style="color: #000000; ">*</span><span style="color: #000000; ">c&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;mod;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r[</span><span style="color: #000000; ">3</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;r[</span><span style="color: #000000; ">4</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">c&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;mod;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(n</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;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%lld\n</span><span style="color: #000000; ">"</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;mod);<br />&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;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(n</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;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%lld\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,r[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;mod);<br />&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;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n</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;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(n)<br />&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;(n</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">1</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;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">4</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">++</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;temp[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">r[i];<br />&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;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">4</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&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;r[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</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;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;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; ">4</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;&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;r[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(r[i]</span><span style="color: #000000; ">+</span><span style="color: #000000; ">temp[j]</span><span style="color: #000000; ">*</span><span style="color: #000000; ">mtx[i][j])&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;mod;<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;}<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;matrix_mul();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n</span><span style="color: #000000; ">&gt;&gt;=</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;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%lld\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,r[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;mod);<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/ArcTan/aggbug/186628.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-08-08 09:41 <a href="http://www.cppblog.com/ArcTan/articles/186628.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SGU_449 数论_最大公因数</title><link>http://www.cppblog.com/ArcTan/articles/185934.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Wed, 01 Aug 2012 12:22:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/185934.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/185934.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/185934.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/185934.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/185934.html</trackback:ping><description><![CDATA[<a href="http://acm.sgu.ru/problem.php?contest=0&amp;problem=499">http://acm.sgu.ru/problem.php?contest=0&amp;problem=499</a><br /><br />给定N（&lt;10W）个数，在100W以内，求每两个数最大共因数中最大的。<br />直接枚举N^2超时，想到都在100W内，则可以以借助筛法来做。从上往下筛，最坏情况下是对于N*ln N&lt;N*lgN。<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;maxn&nbsp;100010</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;maxm&nbsp;1000100</span><span style="color: #000000; "><br /><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;times[maxm];<br /><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;n;<br />&nbsp;&nbsp;&nbsp;&nbsp;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);<br />&nbsp;&nbsp;&nbsp;&nbsp;clr(times);<br />&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;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; ">n;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;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;x;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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; ">x);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;times[x]</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1000000</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(i</span><span style="color: #000000; ">&gt;</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;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(times[i]</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;cnt</span><span style="color: #000000; ">=</span><span style="color: #000000; ">times[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(j</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">1000000</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;cnt</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cnt</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">times[j];&nbsp; //这里刚刚开始用的是times[i]+=times[j];这样不对，因为像 8这样的情况，会错的！<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(cnt</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,i);<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><br /><br /><img src ="http://www.cppblog.com/ArcTan/aggbug/185934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-08-01 20:22 <a href="http://www.cppblog.com/ArcTan/articles/185934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SGU_497  	Coins </title><link>http://www.cppblog.com/ArcTan/articles/185932.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Wed, 01 Aug 2012 12:16:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/185932.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/185932.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/185932.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/185932.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/185932.html</trackback:ping><description><![CDATA[<a href="http://acm.sgu.ru/problem.php?contest=0&amp;problem=498">http://acm.sgu.ru/problem.php?contest=0&amp;problem=498</a><br /><br />概率题目，还不知道怎么做！<br /><br /><img src ="http://www.cppblog.com/ArcTan/aggbug/185932.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-08-01 20:16 <a href="http://www.cppblog.com/ArcTan/articles/185932.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SPOJ_A Famous Game_概率分析</title><link>http://www.cppblog.com/ArcTan/articles/185780.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Tue, 31 Jul 2012 12:47:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/185780.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/185780.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/185780.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/185780.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/185780.html</trackback:ping><description><![CDATA[<a href="http://www.spoj.pl/problems/PRLGAME2/">http://www.spoj.pl/problems/PRLGAME2/</a><br /><br />很有意思的概率题目，具体怎么证明不明白，再多学学数学去吧。<br /><br />另外发现了SPOJ这个优秀的OJ，多刷刷题了！<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdlib</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstring</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cmath</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">ctime</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cassert</span><span style="color: #000000; ">&gt;</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: #000000; ">sstream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">fstream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">map</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; ">set</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">vector</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">queue</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">algorithm</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;min(x,y)&nbsp;(x&lt;y?x:y)</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;max(x,y)&nbsp;(x&gt;y?x:y)</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;swap(t,x,y)&nbsp;(t=x,x=y,y=t)</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;distance(x1,x2,y1,y2,z1,z2)&nbsp;(sqrt(pow(x2-x1,2)+pow(y2-y1,2)+pow(z2-z1,2)))</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;myabs(x)&nbsp;(x&lt;0?-x:x)</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;sgn(x)&nbsp;(x&lt;0?-1:(x&gt;0?1:0))</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;clr(list)&nbsp;memset(list,0,sizeof(list))</span><span style="color: #000000; "><br /><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 /><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;n,p,q;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;t</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; ">while</span><span style="color: #000000; ">&nbsp;(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)</span><span style="color: #000000; ">==</span><span style="color: #000000; ">3</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; ">Case&nbsp;%d:&nbsp;%.4lf\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">++</span><span style="color: #000000; ">t,(</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">)(q</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: #0000FF; ">double</span><span style="color: #000000; ">)(p</span><span style="color: #000000; ">+</span><span style="color: #000000; ">2</span><span style="color: #000000; ">));<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><img src ="http://www.cppblog.com/ArcTan/aggbug/185780.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-07-31 20:47 <a href="http://www.cppblog.com/ArcTan/articles/185780.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>卡特兰树-Catalan数</title><link>http://www.cppblog.com/ArcTan/articles/185169.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Thu, 26 Jul 2012 05:19:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/185169.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/185169.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/185169.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/185169.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/185169.html</trackback:ping><description><![CDATA[Catalan数的应用：<br /><a href="http://www.cppblog.com/abilitytao/archive/2010/04/12/112371.html">http://www.cppblog.com/abilitytao/archive/2010/04/12/112371.html</a><br /><br /><div><p>卡特兰数真是一个神奇的数字，很多组合问题的数量都和它有关系，例如： <br /></p> <p style="color: red">一.Cn= 长度为 2n的 Dyck words的数量。 Dyck words是由 n个 X和 n个 Y组成的字符串，并且从左往右数， Y的数量不超过 X，例如长度为 6的 Dyck words为： </p> <p align="center">XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY <br /></p> <p><span style="color: red">二.Cn= n对括号正确匹配组成的字符串数，例如 3对括号能够组成：</span> </p> <p align="center">((())) ()(()) ()()() (())() (()()) </p> <p><span style="color: red">三.Cn= n+1个数相乘，所有的括号方案数。例如， 4个数相乘的括号方案为：</span> </p> <p align="center">&nbsp; <br />((ab)c)d (a(bc))d (ab)(cd) a((bc)d) a(b(cd)) </p> <p><span style="color: red">\四.Cn= 拥有 n+1 个叶子节点的二叉树的数量。例如 4个叶子节点的所有二叉树形态：</span> </p> <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="编程之美学习 连载之三：2.1卡特兰数(Catalan) - Silver - Silver" alt="Catalan number binary tree example.png" src="http://upload.wikimedia.org/wikipedia/commons/0/01/Catalan_number_binary_tree_example.png" height="92" width="496" /></p> <p><span style="color: red">五.Cn=n*n的方格地图中，从一个角到另外一个角，不跨越对角线的路径数，例如， 4&#215;4方格地图中的路径有：</span> </p> <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="编程之美学习 连载之三：2.1卡特兰数(Catalan) - Silver - Silver" alt="Catalan number 4x4 grid example.svg" src="http://upload.wikimedia.org/wikipedia/commons/thumb/f/f4/Catalan_number_4x4_grid_example.svg/450px-Catalan_number_4x4_grid_example.svg.png" height="228" width="450" /></p> <p><span style="color: red">六.Cn= n+2条边的多边形，能被分割成三角形的方案数，例如 6边型的分割方案有：</span> </p> <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="编程之美学习 连载之三：2.1卡特兰数(Catalan) - Silver - Silver" alt="Catalan-Hexagons-example.svg" src="http://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Catalan-Hexagons-example.svg/400px-Catalan-Hexagons-example.svg.png" height="200" width="400" /></p> <p style="color: red">七.Cn= 圆桌周围有 2n个人，他们两两握手，但没有交叉的方案数。 </p> <p>在《Enumerative Combinatorics》一书中，竟然提到了多达 66种组合问题和卡特兰数有关。</p></div><br /><div><a href="http://www.papershome.com/jisuanji/yingyong/12555.html">算法分析中Catalan数的应用研究</a><br /><div>一、catalan计数序列及其递推公式<br /> 	（一）catalan数<br /> 	catalan数即序列c0,c1,c2,&#8230;,cn,&#8230;。其中cn= (n=0,1,2,&#8230;)。前几个catalan数为c0=1,c1=1,c2=2,c3=5,c4=14,c5=42,c6=132,c7=429,c8=1430,c9=4862。<br /> 	（二）递推公式<br /> 	公式1：cn=c0cn-1+c1cn-2+&#8230;+cn-1c0= (1)<br /> 	此公式为catalan数最常见递推公式。由公式可得出cn= (n=0,1,2,&#8230;),其证明过程主要是求此非线性递推公式的生成函数, 具体证明可参见参考文献中的组合数学。<br /> 	公式2：cn= cn-1 (n&#8805;1) c0=1,c1=1 (2)<br /> 	此公式也为catalan数常见递推公式之一。由公式也可得出cn= (n=0,1,2,&#8230;),其证明过程较为简单。只要不断地递归到c0=1即可。<br /> 	定理1：n个+1和n个-1构成的2n项a1,a2,&#8230;,a2n,其部分和满足a1+a2+&#8230;+ak&#8805;0 (k=1,2,&#8230;,2n)的数列个数等于第n个catalan数，即cn= 。<br /> 	证明：此定理的可以直接利用排列组合来证明，具体的证明可参见参考文献中的组合数学。这里给出另一种证明方式。<br /> 	设满足部分和非负的数列个数为cn，此数列中的每一个都可看成是由i个+1和i个-1以及n-i个+1和n-i个-1这样两个数列构成。  由i个+1和i个-1构成的数列个数为ci, 由n-i个+1和n-i个-1构成的数列个数为cn-i，由乘法和加法原理可知cn=  且c0=1即满足公式1,所以cn= 。</div><br /></div><br /><br /><br /><br /><br /><br /><img src ="http://www.cppblog.com/ArcTan/aggbug/185169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-07-26 13:19 <a href="http://www.cppblog.com/ArcTan/articles/185169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2008 Hangzhou 网络赛-D hdu2421 （数论）</title><link>http://www.cppblog.com/ArcTan/articles/184182.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Thu, 19 Jul 2012 07:09:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/184182.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/184182.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/184182.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/184182.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/184182.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Problem Description：Xiaoming has just come up with a new way for encryption, by calculating  the key from a publicly viewable number in the following way:Let the public key N = AB, where 1 &lt;= A, B ...&nbsp;&nbsp;<a href='http://www.cppblog.com/ArcTan/articles/184182.html'>阅读全文</a><img src ="http://www.cppblog.com/ArcTan/aggbug/184182.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-07-19 15:09 <a href="http://www.cppblog.com/ArcTan/articles/184182.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SRM 150 DIV 2 500pt（thinking &amp;&amp; 数论）</title><link>http://www.cppblog.com/ArcTan/articles/183609.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Sun, 15 Jul 2012 13:54:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/183609.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/183609.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/183609.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/183609.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/183609.html</trackback:ping><description><![CDATA[<div>                        <table>       <tbody><tr>         <td colspan="2">           <h3>             Problem Statement           </h3>         </td>       </tr>       <tr>         <td>           &nbsp;&nbsp;&nbsp;&nbsp;         </td>         <td>           <p>             The digits 3 and 9 share an interesting property. If you take any              multiple of 3 and sum its digits, you get another multiple of 3.              For example, 118*3 = 354 and 3+5+4 = 12, which is a multiple of 3.              Similarly, if you take any multiple of 9 and sum its digits, you              get another multiple of 9. For example, 75*9 = 675 and 6+7+5 = 18,              which is a multiple of 9. Call any digit for which this property              holds <em>interesting</em>, except for 0 and 1, for which the              property holds trivially.           </p>           <p>             A digit that is interesting in one base is not necessarily              interesting in another base. For example, 3 is interesting in base              10 but uninteresting in base 5. Given an int <strong>base</strong>, your              task is to return all the interesting digits for that base in              increasing order. To determine whether a particular digit is              interesting or not, you need not consider <em>all</em> multiples of              the digit. You can be certain that, if the property holds for all              multiples of the digit with fewer than four digits, then it also              holds for multiples with more digits. For example, in base 10, you              would not need to consider any multiples greater than 999.           </p>         </td>       </tr>       <tr>         <td colspan="2">           <h3>             Definition           </h3>         </td>       </tr>       <tr>         <td>           &nbsp;&nbsp;&nbsp;&nbsp;         </td>         <td>           <table>             <tbody><tr>               <td>                 Class:               </td>               <td>                 InterestingDigits               </td>             </tr>             <tr>               <td>                 Method:               </td>               <td>                 digits               </td>             </tr>             <tr>               <td>                 Parameters:               </td>               <td>                 int               </td>             </tr>             <tr>               <td>                 Returns:               </td>               <td>                 vector &lt;int&gt;               </td>             </tr>             <tr>               <td>                 Method signature:               </td>               <td>                 vector &lt;int&gt; digits(int base)               </td>             </tr>             <tr>               <td colspan="2">                 (be sure your method is public)               </td>             </tr>           </tbody></table>         </td>       </tr>       <tr>         <td>           &nbsp;&nbsp;&nbsp;&nbsp;         </td>       </tr>       <tr>         <td>                    <br /></td>       </tr>       <tr>         <td colspan="2">           <h3>             Notes           </h3>         </td>       </tr>       <tr>         <td valign="top" align="center">           -         </td>         <td>           When <strong>base</strong> is greater than 10, digits may have a numeric value            greater than 9. Because integers are displayed in base 10 by            default, do not be alarmed when such digits appear on your screen as            more than one decimal digit. For example, one of the interesting            digits in base 16 is 15.         </td>       </tr>       <tr>         <td colspan="2">           <h3>             Constraints           </h3>         </td>       </tr>       <tr>         <td valign="top" align="center">           -         </td>         <td>           <strong>base</strong> is between 3 and 30, inclusive.         </td>       </tr>       <tr>         <td colspan="2">           <h3>             Examples           </h3>         </td>       </tr>       <tr>         <td nowrap="true" align="center">           0)         </td>         <td>                    <br /></td>       </tr>       <tr>         <td>           &nbsp;&nbsp;&nbsp;&nbsp;         </td>         <td>           <table>             <tbody><tr>               <td>                 <table>                   <tbody><tr>                     <td>                       <pre>10</pre>                     </td>                   </tr>                 </tbody></table>               </td>             </tr>             <tr>               <td>                 <pre>Returns: { 3,  9 }</pre>               </td>             </tr>             <tr>               <td>                 <table>                   <tbody><tr>                     <td colspan="2">                       All other candidate digits fail for <strong>base</strong>=10. For                        example, 2 and 5 both fail on 100, for which 1+0+0=1.                        Similarly, 4 and 8 both fail on 216, for which 2+1+6=9,                        and 6 and 7 both fail for 126, for which 1+2+6=9.                     </td>                   </tr>                 </tbody></table>               </td>             </tr>           </tbody></table>         </td>       </tr>       <tr>         <td nowrap="true" align="center">           1)         </td>         <td>                    <br /></td>       </tr>       <tr>         <td>           &nbsp;&nbsp;&nbsp;&nbsp;         </td>         <td>           <table>             <tbody><tr>               <td>                 <table>                   <tbody><tr>                     <td>                       <pre>3</pre>                     </td>                   </tr>                 </tbody></table>               </td>             </tr>             <tr>               <td>                 <pre>Returns: { 2 }</pre>               </td>             </tr>             <tr>               <td>                                <br /></td>             </tr>           </tbody></table>         </td>       </tr>       <tr>         <td nowrap="true" align="center">           2)         </td>         <td>                    <br /></td>       </tr>       <tr>         <td>           &nbsp;&nbsp;&nbsp;&nbsp;         </td>         <td>           <table>             <tbody><tr>               <td>                 <table>                   <tbody><tr>                     <td>                       <pre>9</pre>                     </td>                   </tr>                 </tbody></table>               </td>             </tr>             <tr>               <td>                 <pre>Returns: { 2,  4,  8 }</pre>               </td>             </tr>             <tr>               <td>                                <br /></td>             </tr>           </tbody></table>         </td>       </tr>       <tr>         <td nowrap="true" align="center">           3)         </td>         <td>                    <br /></td>       </tr>       <tr>         <td>           &nbsp;&nbsp;&nbsp;&nbsp;         </td>         <td>           <table>             <tbody><tr>               <td>                 <table>                   <tbody><tr>                     <td>                       <pre>26</pre>                     </td>                   </tr>                 </tbody></table>               </td>             </tr>             <tr>               <td>                 <pre>Returns: { 5,  25 }</pre>               </td>             </tr>             <tr>               <td>                                <br /></td>             </tr>           </tbody></table>         </td>       </tr>       <tr>         <td nowrap="true" align="center">           4)         </td>         <td>                    <br /></td>       </tr>       <tr>         <td>           &nbsp;&nbsp;&nbsp;&nbsp;         </td>         <td>           <table>             <tbody><tr>               <td>                 <table>                   <tbody><tr>                     <td>                       <pre>30</pre>                     </td>                   </tr>                 </tbody></table>               </td>             </tr>             <tr>               <td>                 <pre>Returns: { 29 }</pre>               </td>             </tr>             <tr>               <td>                                <br /></td>             </tr>           </tbody></table>         </td>       </tr>     </tbody></table>     <p>       This problem statement is the exclusive and proprietary property of        TopCoder, Inc. Any unauthorized use or reproduction of this information        without the prior written consent of TopCoder, Inc. is strictly        prohibited. (c)2003, TopCoder, Inc. All rights reserved.     </p>     </div><br />题意给定base进制数里，找出里面所有的特别的数x,对于x的倍数kx，它的每一位的和还是x的倍数。<br />比如base=10，则x=3和9。<br /><br />这个应该是小学时候就记得的结论了，专门算3和9的，哈哈。<br /><br />结论：base %x==1是充要条件。<br />证明：<br />&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a=a1*base^0+a2*base^1+a3*base^2,对于任何a都可以这样分解<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 因为 base % x=1，则base^k %x==1。则上式化简为<br />&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; a==a1+a2+a3+.. (mod x)<br />&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 反之，也可得base %x==1<br /><br />440PT啊，小小犹豫了下哦。直接枚举了x验证啊。<br /><br />其实就是求base-1的因子，如果base很大地话，是不能这样去枚举的。因子分解哦，又是经典问题啊。<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #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 />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">vector</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">algorithm</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 /><br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;InterestingDigits{<br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">:<br />&nbsp;&nbsp;&nbsp;&nbsp;vector&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;digits(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a[</span><span style="color: #000000; ">31</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i</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;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(i</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">){<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;(</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;i</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;a[n</span><span style="color: #000000; ">++</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vector&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;ans(n);<br />&nbsp;&nbsp;&nbsp;&nbsp;&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; ">n;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">a[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;ans;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />};</span></div><br /><br /><br /><img src ="http://www.cppblog.com/ArcTan/aggbug/183609.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-07-15 21:54 <a href="http://www.cppblog.com/ArcTan/articles/183609.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>fzu_1759(大数模除)</title><link>http://www.cppblog.com/ArcTan/articles/182977.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Thu, 12 Jul 2012 04:36:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/182977.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/182977.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/182977.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/182977.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/182977.html</trackback:ping><description><![CDATA[<div><a href="http://acm.fzu.edu.cn/problem.php?pid=1759">http://acm.fzu.edu.cn/problem.php?pid=1759</a></div><br /><div>Given A,B,C, You should quickly calculate the result of A^B mod C. (1&lt;=A,C&lt;=1000000000,1&lt;=B&lt;=10^1000000).</div><br />思路一：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 十进制做法，把B分解，一步一步求A^B mod C,这样最多是1000W。TLE。测试数据组肯定很多》=10<br /><br />思路二：<br />&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 求A^x=1 mod C，直接求x=phi(C)就行。然后求A^B=A^(B mod C) mod (C)。<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 尼玛，我是傻逼啊，居然用x=C-1(C是质数)x=C(C是合数)！！！！！！！！！简单的数论啊，这个就给跪了！！<br /><br />诡异的地方了我一直TLE啊，后的都优化了嘛，100W啊，怎么还是TLE啊？WA我都能接受，然后就去x=phi(C)啊。我擦擦擦！！！！<br /><br /><br />取x=phi(C);啊啊啊 啊<br /><div><img src="data:image/png;base64,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" alt="" /></div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #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 />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">math.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;maxn&nbsp;1000000</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;B[maxn</span><span style="color: #000000; ">+</span><span style="color: #000000; ">5</span><span style="color: #000000; ">];<br /></span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;phi(</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;&nbsp;n)<br />{<br />&nbsp;&nbsp;&nbsp;&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;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,i;<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; ">*</span><span style="color: #000000; ">i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n;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;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(n</span><span style="color: #000000; ">%</span><span style="color: #000000; ">i</span><span style="color: #000000; ">==</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n</span><span style="color: #000000; ">/=</span><span style="color: #000000; ">i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000; ">*=</span><span style="color: #000000; ">i</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;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(n</span><span style="color: #000000; ">%</span><span style="color: #000000; ">i</span><span style="color: #000000; ">==</span><span style="color: #000000; ">0</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;n</span><span style="color: #000000; ">/=</span><span style="color: #000000; ">i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000; ">*=</span><span style="color: #000000; ">i;<br />&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;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(n</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;ans</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; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;ans;<br />}<br /></span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;strmod(</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;t)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i,len;<br />&nbsp;&nbsp;&nbsp;&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;r</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;len</span><span style="color: #000000; ">=</span><span style="color: #000000; ">strlen(B);<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; ">len;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;r</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(r</span><span style="color: #000000; ">*</span><span style="color: #000000; ">10</span><span style="color: #000000; ">+</span><span style="color: #000000; ">B[i]</span><span style="color: #000000; ">-</span><span style="color: #000000; ">'</span><span style="color: #000000; ">0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;t;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;r;<br />}<br /></span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;power(</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;a,</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;b,</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;c)<br />{<br />&nbsp;&nbsp;&nbsp;&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;r;<br />&nbsp;&nbsp;&nbsp;&nbsp;r</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;a</span><span style="color: #000000; ">=</span><span style="color: #000000; ">a</span><span style="color: #000000; ">%</span><span style="color: #000000; ">c;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(b)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(b</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(r</span><span style="color: #000000; ">*</span><span style="color: #000000; ">a)&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;c;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(a</span><span style="color: #000000; ">*</span><span style="color: #000000; ">a)</span><span style="color: #000000; ">%</span><span style="color: #000000; ">c;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b</span><span style="color: #000000; ">&gt;&gt;=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;r&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;c;<br />}<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; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;A,b,C;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%I64d%s%I64d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">A,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">B,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">C)</span><span style="color: #000000; ">==</span><span style="color: #000000; ">3</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;t;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A</span><span style="color: #000000; ">=</span><span style="color: #000000; ">A</span><span style="color: #000000; ">%</span><span style="color: #000000; ">C;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000; ">=</span><span style="color: #000000; ">phi(C);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b</span><span style="color: #000000; ">=</span><span style="color: #000000; ">strmod(t);<br />&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; ">,power(A,b,C));<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 /><img src ="http://www.cppblog.com/ArcTan/aggbug/182977.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-07-12 12:36 <a href="http://www.cppblog.com/ArcTan/articles/182977.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj 3922(2008 Beijing 组合博弈 构造数列)</title><link>http://www.cppblog.com/ArcTan/articles/178496.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Tue, 12 Jun 2012 03:36:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/178496.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/178496.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/178496.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/178496.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/178496.html</trackback:ping><description><![CDATA[<div><a href="http://poj.org/problem?id=3922">http://poj.org/problem?id=3922</a><br /><br />这个题解比较详细：</div><a href="http://hi.baidu.com/huicpc0207/item/f11a06f36ecfe91484d278fd">http://hi.baidu.com/huicpc0207/item/f11a06f36ecfe91484d278fd</a><br /><br />disscus里说有比O(n)还低的DP方法，之前我也构造出来了，不过是不正确的。比O(n)低的DP方法？？？<br /><br />问了问院长老师，希望她能给个比较好的算法哦哦哦<br /><br />归纳、构造数列：根据k=1,k=2找到思路，找出必败态即可。<br />总结：<br />&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 1、多研究思考些有难度的数学问题，自己找到办法。<br />&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 2、复杂问题总是有简单办法的。<br />&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 3、难题代码实现一般很容易！<br /><div><img src="data:image/png;base64,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" alt="" /></div><br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><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 />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">math.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;a[</span><span style="color: #000000; ">1000005</span><span style="color: #000000; ">],r[</span><span style="color: #000000; ">1000005</span><span style="color: #000000; ">];<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;solve(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;k)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i,j,ans;<br />&nbsp;&nbsp;&nbsp;&nbsp;a[</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; ">;r[</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;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(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; ">0</span><span style="color: #000000; ">;i</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; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">r[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; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(j</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">i&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;a[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; ">k&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">a[i])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">a[i]</span><span style="color: #000000; ">+</span><span style="color: #000000; ">r[j];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(r[i]</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">n)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(a[i]</span><span style="color: #000000; ">==</span><span style="color: #000000; ">n)<br />&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; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(i</span><span style="color: #000000; ">&gt;=</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;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(n</span><span style="color: #000000; ">==</span><span style="color: #000000; ">a[i])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;a[i];<br />&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;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(n</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">a[i])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n</span><span style="color: #000000; ">-=</span><span style="color: #000000; ">a[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;ans;<br />}<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;t,cas</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,n,k,ans;<br />&nbsp;&nbsp;&nbsp;&nbsp;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; ">t);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(t</span><span style="color: #000000; ">--</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%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; ">k);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">solve(n,k);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Case&nbsp;%d:&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">++</span><span style="color: #000000; ">cas);<br />&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; ">ans)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">lose\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&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;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,ans);<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 /><img src ="http://www.cppblog.com/ArcTan/aggbug/178496.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-06-12 11:36 <a href="http://www.cppblog.com/ArcTan/articles/178496.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ural 1133 (fibonacci数列)</title><link>http://www.cppblog.com/ArcTan/articles/173912.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Mon, 07 May 2012 08:47:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/173912.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/173912.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/173912.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/173912.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/173912.html</trackback:ping><description><![CDATA[<div>http://acm.timus.ru/problem.aspx?space=1&amp;num=1133</div><br />题目大意：给定i Fi,j,Fj,n.求Fn。<br />满足：Fi+2=Fi+1+Fi;<br /><br />应该说是水题一个哇：<br />&nbsp;&nbsp; &nbsp;&nbsp; Fi+k = gk * Fi + gk-1 * Fi-1。其中g是1 1 开头的fibonacci数。<br /><br />C/C++的long long double都过不了。pascal的extended过了。怎么回事呢？？<br /><br />Pascal代码：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">Var<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000; ">,</span><span style="color: #000000; ">j</span><span style="color: #000000; ">,</span><span style="color: #000000; ">k</span><span style="color: #000000; ">,</span><span style="color: #000000; ">p</span><span style="color: #000000; ">,</span><span style="color: #000000; ">n</span><span style="color: #000000; ">,</span><span style="color: #000000; ">tmp:longint</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F:array</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">-1001..1001</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">&nbsp;of&nbsp;extended</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g:array</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">0..2002</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">&nbsp;of&nbsp;extended</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp</span><span style="color: #000000; ">,</span><span style="color: #000000; ">ti</span><span style="color: #000000; ">,</span><span style="color: #000000; ">tj:extended</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; "><br />begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readln(i</span><span style="color: #000000; ">,</span><span style="color: #000000; ">ti</span><span style="color: #000000; ">,</span><span style="color: #000000; ">j</span><span style="color: #000000; ">,</span><span style="color: #000000; ">tj</span><span style="color: #000000; ">,</span><span style="color: #000000; ">n)</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">:</span><span style="color: #000000; ">=</span><span style="color: #000000; ">ti</span><span style="color: #008000; ">;</span><span style="color: #008000; ">F[j]:=tj;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(i&gt;j)&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp:</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #008000; ">;</span><span style="color: #008000; ">i:=j;j:=tmp;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">:</span><span style="color: #000000; ">=</span><span style="color: #000000; ">tj</span><span style="color: #008000; ">;</span><span style="color: #008000; ">F[j]:=ti;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k:</span><span style="color: #000000; ">=</span><span style="color: #000000; ">j-i</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">0</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">:</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #008000; ">;</span><span style="color: #008000; ">g[1]:=1;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;p:</span><span style="color: #000000; ">=</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;to&nbsp;k&nbsp;do<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">p</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">:</span><span style="color: #000000; ">=</span><span style="color: #000000; ">g</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">p-1</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">+g</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">p-2</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i-1</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">:</span><span style="color: #000000; ">=</span><span style="color: #000000; ">trunc((F</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">j</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">-F</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">*g</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">k</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">)/g</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">k-1</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">)</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;n&gt;i&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k:</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i+</span><span style="color: #000000; ">1</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;k&lt;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">n&nbsp;do<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<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;F</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">k</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">:</span><span style="color: #000000; ">=</span><span style="color: #000000; ">F</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">k-1</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">+F</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">k-2</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #008000; ">;<br /></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;inc(k)</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;n&lt;i-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k:</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i-</span><span style="color: #000000; ">2</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;k&gt;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">n&nbsp;do<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<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;F</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">k</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">:</span><span style="color: #000000; ">=</span><span style="color: #000000; ">F</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">k+2</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">-F</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">k+1</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #008000; ">;<br /></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;dec(k)</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writeln(F</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">n</span><span style="color: #800000; font-weight: bold; ">]</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; ">)</span><span style="color: #008000;">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readln</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">end.<br /><br /></span></div><br />昨天真是被这个题目虐惨了啊！！！！！！<br />尼玛，我们真是弱爆了！<img src ="http://www.cppblog.com/ArcTan/aggbug/173912.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-05-07 16:47 <a href="http://www.cppblog.com/ArcTan/articles/173912.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj2034----质数判断+bfs</title><link>http://www.cppblog.com/ArcTan/articles/173664.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Fri, 04 May 2012 09:00:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/173664.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/173664.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/173664.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/173664.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/173664.html</trackback:ping><description><![CDATA[<a href="http://poj.org/problem?id=2034">http://poj.org/problem?id=2034</a><br /><br />题目大意：<br />&nbsp;&nbsp; &nbsp;&nbsp; 给定0&lt;m&lt;n&lt;=1000,1&lt;d&lt;11,求出m到n内的数的一个排列：<br />&nbsp;&nbsp; &nbsp;&nbsp; 使得连续的大于2小于等于d的长度的数字之和是合数。<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><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 />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">math.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;p[</span><span style="color: #000000; ">500005</span><span style="color: #000000; ">];<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;ans,a[</span><span style="color: #000000; ">1005</span><span style="color: #000000; ">],b[</span><span style="color: #000000; ">1005</span><span style="color: #000000; ">],sum[</span><span style="color: #000000; ">10005</span><span style="color: #000000; ">];<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;m,n,d;<br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000;">&nbsp;GetPri()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i,j;<br />&nbsp;&nbsp;&nbsp;&nbsp;memset(p,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(p));<br />&nbsp;&nbsp;&nbsp;&nbsp;p[</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;i</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; ">while</span><span style="color: #000000; ">&nbsp;(i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">500000</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(p[i])&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(j</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">500000</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[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;j</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;dfs(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;dep)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i,k,flag;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(ans)<br />&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; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(dep</span><span style="color: #000000; ">==</span><span style="color: #000000; ">n</span><span style="color: #000000; ">-</span><span style="color: #000000; ">m</span><span style="color: #000000; ">+</span><span style="color: #000000; ">2</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans</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; ">&nbsp;(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">n</span><span style="color: #000000; ">-</span><span style="color: #000000; ">m</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">&nbsp;)<br />&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; ">,a[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,a[i]);<br />&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; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<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; ">m;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n&nbsp;;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&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; ">b[i])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag</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;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(k</span><span style="color: #000000; ">=</span><span style="color: #000000; ">2</span><span style="color: #000000; ">;k</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">d&nbsp;;k</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;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(k</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">dep</span><span style="color: #000000; ">&amp;&amp;!</span><span style="color: #000000; ">p[sum[dep</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; ">sum[dep</span><span style="color: #000000; ">-</span><span style="color: #000000; ">k]</span><span style="color: #000000; ">+</span><span style="color: #000000; ">i])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&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;(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">flag</span><span style="color: #000000; ">||</span><span style="color: #000000; ">k</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">dep)<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; ">break</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; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">flag)<br />&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 /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[dep]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum[dep]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">sum[dep</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; ">i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b[i]</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;dfs(dep</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;b[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;GetPri();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(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; ">m,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">n,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">d)</span><span style="color: #000000; ">==</span><span style="color: #000000; ">3</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&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; ">m</span><span style="color: #000000; ">&amp;&amp;!</span><span style="color: #000000; ">n</span><span style="color: #000000; ">&amp;&amp;!</span><span style="color: #000000; ">d)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(sum,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(sum));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(b,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(b));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dfs(</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; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">ans)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">No&nbsp;anti-prime&nbsp;sequence&nbsp;exists.\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<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>水过一题。dfs还是很好写的哈<br /><br /><br /><img src ="http://www.cppblog.com/ArcTan/aggbug/173664.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-05-04 17:00 <a href="http://www.cppblog.com/ArcTan/articles/173664.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>因数分解-模板-poj1365</title><link>http://www.cppblog.com/ArcTan/articles/173662.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Fri, 04 May 2012 08:04:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/173662.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/173662.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/173662.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/173662.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/173662.html</trackback:ping><description><![CDATA[<div>http://poj.org/problem?id=1365</div><br />傻&#215;，这个题看了很久都没有看懂是什么意思。英语不行呀，到底应该怎么办呢？<br />题意，就是给一些a1 b1,a2 b2，&#8230;&#8230;，ak bk<br />n=a1^b1*a2^b2*&#8230;&#8230;*ak^bk.<br />然后需要对n-1因数分解。<br /><br />赤裸裸的整数因子分解，数据也弱爆了！<br />不过数据读入还是个问题，字符读入的换行符ascii是10！<br />sscanf()和scanf()不同的呀。<br /><br /><div><img src="data:image/png;base64,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" alt="" /></div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #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 />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">math.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;pri[</span><span style="color: #000000; ">5500</span><span style="color: #000000; ">];<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;p[</span><span style="color: #000000; ">100005</span><span style="color: #000000; ">],tot;<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;GetPrime()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i,j;<br />&nbsp;&nbsp;&nbsp;&nbsp;memset(p,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(p));<br />&nbsp;&nbsp;&nbsp;&nbsp;tot</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i</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; ">while</span><span style="color: #000000; ">&nbsp;(i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">50000</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(p[i])&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pri[</span><span style="color: #000000; ">++</span><span style="color: #000000; ">tot]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(j</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">50000</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[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;j</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;tot</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<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><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;Pow(</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;b)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n;<br />&nbsp;&nbsp;&nbsp;&nbsp;n</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(b)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(b</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; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n</span><span style="color: #000000; ">=</span><span style="color: #000000; ">n</span><span style="color: #000000; ">*</span><span style="color: #000000; ">a;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a</span><span style="color: #000000; ">=</span><span style="color: #000000; ">a</span><span style="color: #000000; ">*</span><span style="color: #000000; ">a;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b</span><span style="color: #000000; ">=</span><span style="color: #000000; ">b</span><span style="color: #000000; ">/</span><span style="color: #000000; ">2</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;n;<br />}<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;Solve(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i,j;<br />&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">tot;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(n</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">i</span><span style="color: #000000; ">&gt;=</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;j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(n</span><span style="color: #000000; ">%</span><span style="color: #000000; ">pri[i]</span><span style="color: #000000; ">==</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n</span><span style="color: #000000; ">/=</span><span style="color: #000000; ">pri[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(j</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d&nbsp;%d&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,pri[i],j);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(n</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d&nbsp;%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,n,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />}<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;n,a,b;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;ch;<br />&nbsp;&nbsp;&nbsp;&nbsp;GetPrime();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(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; ">a)</span><span style="color: #000000; ">==</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">a</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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; ">b);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n</span><span style="color: #000000; ">=</span><span style="color: #000000; ">Pow(a,b);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%c</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">ch)</span><span style="color: #000000; ">==</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">ch</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">10</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d&nbsp;%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">a,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">b);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n</span><span style="color: #000000; ">=</span><span style="color: #000000; ">n</span><span style="color: #000000; ">*</span><span style="color: #000000; ">Pow(a,b);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Solve(n</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><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>&nbsp;<img src ="http://www.cppblog.com/ArcTan/aggbug/173662.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-05-04 16:04 <a href="http://www.cppblog.com/ArcTan/articles/173662.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>中国剩余定理 </title><link>http://www.cppblog.com/ArcTan/articles/173248.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Mon, 30 Apr 2012 08:34:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/173248.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/173248.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/173248.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/173248.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/173248.html</trackback:ping><description><![CDATA[<div><pre id="best-answer-content"  mb10"="">设m1,m2,...,mk是两两互素的正整数，对于任意的正整数a1,a2,a3,..,ak 同余方程组：<br />&nbsp;x&#8801;a1 （mod m1）<br />&nbsp;x&#8801;a2 （mod m2）<br />&nbsp;...<br />&nbsp;x&#8801;ak （mod mk)<br />&nbsp;必有解， 且解可写为<br />&nbsp;x&#8801;M1N1a1+MkNkak+....MkNkak  (mod m)<br />&nbsp;其中 m=m1m2m3....mk<br />&nbsp;Mi=m/mi,(1&lt;=i&lt;=k)<br />&nbsp;Nj满足MjNj&#8801;1(mod mj),1&lt;=j&lt;=k<br />即：<br />&nbsp;&nbsp; &nbsp;&nbsp; Ni,Mi是对模mi的互为逆元。<br /><div>http://www.cnblogs.com/walker01/archive/2010/01/23/1654880.html</div>     这篇写得不错哇。<br />&nbsp;&nbsp; &nbsp;&nbsp; <br />中国剩余定理O(nlogn),还算高效率的。<br /></pre><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #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 />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">math.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;a[</span><span style="color: #000000; ">25</span><span style="color: #000000; ">],m[</span><span style="color: #000000; ">25</span><span style="color: #000000; ">],M[</span><span style="color: #000000; ">25</span><span style="color: #000000; ">],N[</span><span style="color: #000000; ">25</span><span style="color: #000000; ">];<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;gcd_ext(</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;b,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">x,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">y)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;d,tmp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(b</span><span style="color: #000000; ">==</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">x</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; ">y</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;a;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;d</span><span style="color: #000000; ">=</span><span style="color: #000000; ">gcd_ext(b,a</span><span style="color: #000000; ">%</span><span style="color: #000000; ">b,x,y);<br />&nbsp;&nbsp;&nbsp;&nbsp;tmp</span><span style="color: #000000; ">=*</span><span style="color: #000000; ">x;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">x</span><span style="color: #000000; ">=*</span><span style="color: #000000; ">y;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">y</span><span style="color: #000000; ">=</span><span style="color: #000000; ">tmp</span><span style="color: #000000; ">-</span><span style="color: #000000; ">(a</span><span style="color: #000000; ">/</span><span style="color: #000000; ">b)</span><span style="color: #000000; ">**</span><span style="color: #000000; ">y;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;d;<br />}<br /></span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;ChReTheorim(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i,x,y;<br />&nbsp;&nbsp;&nbsp;&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;ans,mul;<br />&nbsp;&nbsp;&nbsp;&nbsp;mul</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</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; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n&nbsp;;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mul</span><span style="color: #000000; ">*=</span><span style="color: #000000; ">m[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;ans</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; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n&nbsp;;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;M[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">mul</span><span style="color: #000000; ">/</span><span style="color: #000000; ">m[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gcd_ext(M[i],m[i],</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">x,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">y);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(x</span><span style="color: #000000; ">+</span><span style="color: #000000; ">m[i])</span><span style="color: #000000; ">%</span><span style="color: #000000; ">m[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(ans</span><span style="color: #000000; ">+</span><span style="color: #000000; ">a[i]</span><span style="color: #000000; ">*</span><span style="color: #000000; ">M[i]</span><span style="color: #000000; ">*</span><span style="color: #000000; ">N[i])&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;mul;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;ans;<br />}<br /><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;i,n;<br />&nbsp;&nbsp;&nbsp;&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;ans;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(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; ">==</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;mul</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; ">&nbsp;(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n&nbsp;;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">a[i],</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">m[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">ChReTheorim(n);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%lld\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,ans);<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><pre id="best-answer-content"  mb10"="">尼玛，看算法上的乘法逆元给看成加法逆元了。我还以为我找到O（n）的算法呢。气死：<br />&nbsp;&nbsp; a=a1(mod n1)<br />&nbsp;&nbsp; a=a2(mod n2)<br />则<br />&nbsp;&nbsp; a=(a1*n2*N2+a2*n1*N1) % (n1*n2)<br />其中<br />&nbsp;&nbsp; N1是n1模n2的逆元，N2是n2模n1的逆元。<br />如此反复迭代，可求解。<br /><br /></pre><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;TongYu(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a1,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n1,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a2,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n2)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;N1,N2,x,y,ans;<br />&nbsp;&nbsp;&nbsp;&nbsp;gcd_ext(n1,n2,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">x,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">y);<br />&nbsp;&nbsp;&nbsp;&nbsp;N1</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(n2</span><span style="color: #000000; ">+</span><span style="color: #000000; ">x)&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;n2;<br />&nbsp;&nbsp;&nbsp;&nbsp;gcd_ext(n2,n1,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">x,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">y);<br />&nbsp;&nbsp;&nbsp;&nbsp;N2</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(n1</span><span style="color: #000000; ">+</span><span style="color: #000000; ">x)&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;n1;<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d&nbsp;%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,N1,N2);<br />&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(a1</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">N2</span><span style="color: #000000; ">+</span><span style="color: #000000; ">a2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n1</span><span style="color: #000000; ">*</span><span style="color: #000000; ">N1)&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;(n1</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n2);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000;">&nbsp;ans;<br />}</span></div><pre id="best-answer-content"  mb10"="">哦，<br /><br /><br /><br /></pre></div><img src ="http://www.cppblog.com/ArcTan/aggbug/173248.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-04-30 16:34 <a href="http://www.cppblog.com/ArcTan/articles/173248.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj_1006(同余方程组求解)</title><link>http://www.cppblog.com/ArcTan/articles/173238.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Mon, 30 Apr 2012 05:35:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/173238.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/173238.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/173238.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/173238.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/173238.html</trackback:ping><description><![CDATA[<div><div>http://poj.org/problem?id=1006</div><br />题目大意：<br />&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 给定三个数，a,b,c.求满足<br />&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; x=a (mod 23)<br />&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; x=b (mod 28)<br />&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; x=c (mod 33)<br />的大于d的最小x。 //这里理解很重要！！！！<br />同于方程组问题，我暴力了一下。<br /><img src="data:image/png;base64,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" alt="" /><br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #000000; ">#include&lt;stdio.h&gt;<br />#include&lt;string.h&gt;<br />#include&lt;math.h&gt;<br /><br />int&nbsp;main()&nbsp;<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;a</span><span style="color: #000000; ">,</span><span style="color: #000000; ">b</span><span style="color: #000000; ">,</span><span style="color: #000000; ">c</span><span style="color: #000000; ">,</span><span style="color: #000000; ">d</span><span style="color: #000000; ">,</span><span style="color: #000000; ">i</span><span style="color: #000000; ">,</span><span style="color: #000000; ">t</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d%d%d%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;a</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;b</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;c</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;d)</span><span style="color: #000000; ">==</span><span style="color: #000000; ">4</span><span style="color: #000000; ">&amp;&amp;a&gt;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a%</span><span style="color: #000000; ">=</span><span style="color: #000000; ">23</span><span style="color: #008000; ">;</span><span style="color: #008000; ">b%=28;c%=33;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">c</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&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;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(i%</span><span style="color: #000000; ">23</span><span style="color: #000000; ">==</span><span style="color: #000000; ">a&amp;&amp;i%</span><span style="color: #000000; ">28</span><span style="color: #000000; ">==</span><span style="color: #000000; ">b&amp;&amp;i%</span><span style="color: #000000; ">33</span><span style="color: #000000; ">==</span><span style="color: #000000; ">c)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i+</span><span style="color: #000000; ">=</span><span style="color: #000000; ">33</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(i&lt;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">d)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i+</span><span style="color: #000000; ">=</span><span style="color: #000000; ">21252</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Case&nbsp;%d:&nbsp;the&nbsp;next&nbsp;triple&nbsp;peak&nbsp;occurs&nbsp;in&nbsp;%d&nbsp;days.\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">++t</span><span style="color: #000000; ">,</span><span style="color: #000000; ">i-d)</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">}<br /></span></div><br /><br />同余方程组解法：<br /><br />还不会哦。</div><img src ="http://www.cppblog.com/ArcTan/aggbug/173238.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-04-30 13:35 <a href="http://www.cppblog.com/ArcTan/articles/173238.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ACM-数学知识练习</title><link>http://www.cppblog.com/ArcTan/articles/173228.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Mon, 30 Apr 2012 02:58:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/173228.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/173228.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/173228.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/173228.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/173228.html</trackback:ping><description><![CDATA[<div>POJ【数论/组合/博弈论】题目列表<br />博弈论<br />POJ 2234 Matches Game<br />POJ 2975 Nim<br />POJ 2505 A multiplication game<br />POJ 1067 取石子游戏<br />POJ 2484 A Funny Game<br />POJ 2425 A Chess Game<br />POJ 2960 S-Nim<br />POJ 1704 Georgia and Bob<br />POJ 1740 A New Stone Game<br />POJ 2068 Nim<br />POJ 3480 John<br />POJ 2348 Euclid's Game<br />POJ 3710 Christmas Game<br />POJ 3533 Light Switching Game<br />POJ 3537 Crosses and Crosses<br /><br />数论/组合<br /><br />1.burnside定理，polya计数法<br />&nbsp;&nbsp;&nbsp; 这个大家可以看brudildi的《组合数学》，那本书的这一章写的很详细也很容易理解。最好能完全看懂了，理解了再去做题，不要只记个公式。<br />&nbsp;&nbsp;&nbsp; *简单题：（直接用套公式就可以了）<br />&nbsp;&nbsp;&nbsp; pku2409 Let it Bead&nbsp; &nbsp;<br />&nbsp;&nbsp;&nbsp; pku2154 Color<br />&nbsp;&nbsp;&nbsp; pku1286 Necklace of Beads<br />&nbsp;&nbsp;&nbsp; *强烈推荐：（这题很不错哦，很巧妙）<br />&nbsp;&nbsp;&nbsp; pku2888 Magic Bracelet<br />2.置换，置换的运算<br /><br />&nbsp;&nbsp;&nbsp; 置换的概念还是比较好理解的，《组合数学》里面有讲。对于置换的幂运算大家可以参考一下潘震皓的那篇《置换群快速幂运算研究与探讨》，写的很好。<br />&nbsp;&nbsp;&nbsp; *简单题：（应该理解概念就可以了）<br />&nbsp;&nbsp;&nbsp; pku3270 Cow Sorting<br />&nbsp;&nbsp;&nbsp; pku1026 Cipher<br />&nbsp;&nbsp;&nbsp; *置换幂运算：<br />&nbsp;&nbsp;&nbsp; pku1721 CARDS<br />&nbsp;&nbsp;&nbsp; pku3128 Leonardo's Notebook<br />&nbsp;&nbsp;&nbsp; *推荐：（不错的应用）<br />&nbsp;&nbsp;&nbsp; pku3590 The shuffle Problem<br />3.素数，整数分解，欧拉函数<br /><br />&nbsp;&nbsp;&nbsp; 素数是可能数论里最永恒，最经典的问题了（我们的队名就叫PrimeMusic^-^）。素数的判断，筛法求素数，大素数的判断&#183;&#183;&#183;还有很多其他问题都会用到素数。<br />&nbsp;&nbsp;&nbsp; *最水最水的：（心情不爽时用来解闷吧）<br />&nbsp;&nbsp;&nbsp; pku1365 Prime Land0+0<br /><br />&nbsp;&nbsp;&nbsp; pku2034 Anti-prime Sequences<br />&nbsp;&nbsp;&nbsp; pku2739 Sum of Consecutive Prime Numbers<br />&nbsp;&nbsp;&nbsp; pku3518 Prime Gap<br />&nbsp;&nbsp;&nbsp; pku3126 Prime Path<br />&nbsp;&nbsp;&nbsp; pku1595 Prime Cuts<br />&nbsp;&nbsp;&nbsp; pku3641 Pseudoprime numbers<br />&nbsp;&nbsp;&nbsp; pku2191 Mersenne Composite Numbers<br />&nbsp;&nbsp;&nbsp; pku1730 Perfect Pth Powers<br />&nbsp;&nbsp;&nbsp; pku2262 Goldbach's Conjecture<br />&nbsp;&nbsp;&nbsp; pku2909 Goldbach's Conjecture<br />&nbsp;&nbsp;&nbsp; *筛法：<br />&nbsp;&nbsp;&nbsp; pku2689 Prime Distance（很好的一个应用）<br />&nbsp;&nbsp;&nbsp; *反素数：<br />&nbsp;&nbsp;&nbsp; zoj2562 More Divisors<br />&nbsp;&nbsp;&nbsp; *素数判断，整数分解：<br />&nbsp;&nbsp;&nbsp; 这两题都要用到miller_rabin的素数判断和pollard_rho的整数分解，算法书上都会有，应该是属于模板题吧，不过最好看懂自己敲一遍。<br />&nbsp;&nbsp;&nbsp; pku1811 Prime Test<br />&nbsp;&nbsp;&nbsp; pku2429 GCD &amp; LCM Inverse<br /><br />&nbsp;&nbsp;&nbsp; *欧拉函数：<br />&nbsp;&nbsp;&nbsp; 数论里很多地方都能用到欧拉函数，很重要的。<br />&nbsp;&nbsp;&nbsp; pku1284 Primitive Roots （关于原根的定理：p的原根为euler(euler(p))，本题中当p为奇素数时euler(p)=p-1，故答案为euler(p-1)）<br />&nbsp;&nbsp;&nbsp; pku2407 Relatives （很水）<br />&nbsp;&nbsp;&nbsp; pku2773 Happy 2006<br />&nbsp;&nbsp;&nbsp; pku2478 Farey Sequence （快速求欧拉函数）<br />&nbsp;&nbsp; pku3090 Visible Lattice Points （法雷级数）<br />&nbsp;&nbsp;&nbsp; *推荐：（欧拉函数，费马小定理）<br />&nbsp;&nbsp;&nbsp; pku3358 Period of an Infinite Binary Expansion<br />&nbsp;&nbsp;&nbsp; *整数分解<br />&nbsp;&nbsp;&nbsp; 这个也很重要的耶，包括大数的表示方法。<br />&nbsp;&nbsp;&nbsp; pku2992 Divisors<br />&nbsp;&nbsp;&nbsp; pku3101 Astronomy （分数的最小公倍数）<br />4.扩展欧几里得，线性同余，中国剩余定理<br /><br />&nbsp;&nbsp;&nbsp; 这应该是数论里比较重要的一个部分吧，这类的题目也挺多，具体的内容最好先看看数论书，我也整理过一些，可以参考参考：<br />&nbsp;&nbsp;&nbsp; *简单题：<br />&nbsp;&nbsp;&nbsp; pku1006 Biorhythms<br />&nbsp;&nbsp;&nbsp; pku1061 青蛙的约会<br />&nbsp;&nbsp;&nbsp; pku2891 Strange Way to Express Integers<br />&nbsp;&nbsp;&nbsp; pku2115 C Looooops<br />&nbsp;&nbsp;&nbsp; pku2142 The Balance<br />&nbsp;&nbsp;&nbsp; *强烈推荐：<br />&nbsp;&nbsp;&nbsp; sgu106 The equation<br />&nbsp;&nbsp;&nbsp; pku3708 Recurrent Function （经典）<br />&nbsp;5.约瑟夫环问题<br /><br />&nbsp;&nbsp;&nbsp; 这个问题还是比较有意思的，不是很难。<br />&nbsp;&nbsp;&nbsp; *简单题：<br />&nbsp;&nbsp;&nbsp; pku3517 And Then There Was One<br />&nbsp;&nbsp;&nbsp; pku1781 In Danger<br />&nbsp;&nbsp;&nbsp; pku1012 Joseph<br />&nbsp;&nbsp;&nbsp; pku2244 Eeny Meeny Moo<br />&nbsp;&nbsp;&nbsp; *推荐：<br />&nbsp;&nbsp; pku2886 Who Gets the Most Candies?<br />6.高斯消元法解方程<br /><br />&nbsp;&nbsp;&nbsp; 其实解方程并不是很难，就是按线性代数中学的那种方法，把系数矩阵化成上三角矩阵或数量矩阵，不过有些题目要判断是否有解，或枚举所有解。不过这类题目我认为比较难的还是怎么去建立这个方程组，这个理解了，就没什么大问题了。<br />&nbsp;&nbsp;&nbsp; *简单题：<br />&nbsp;&nbsp;&nbsp; pku1222 EXTENDED LIGHTS OUT<br />&nbsp;&nbsp;&nbsp; pku1681 Painter's Problem<br />&nbsp;&nbsp;&nbsp; pku1830 开关问题<br />&nbsp;&nbsp;&nbsp; *推荐：<br />&nbsp;&nbsp;&nbsp; pku2947 Widget Factory<br />&nbsp;&nbsp;&nbsp; pku2065 SETI<br />&nbsp;&nbsp;&nbsp; *强烈推荐：<br />&nbsp;&nbsp;&nbsp; pku1753 Flip Game<br />&nbsp;&nbsp;&nbsp; pku3185 The Water Bowls<br />&nbsp;&nbsp;&nbsp; *变态题：<br />&nbsp;&nbsp;&nbsp; pku1487 Single-Player Games<br />&nbsp; <br />7.矩阵<br />&nbsp;&nbsp;&nbsp; 用矩阵来解决问题确实很常见，但我现在用到还不是很好，很多难题我还不会做。建议大家可以去看Matrix67的那篇关于矩阵的十个问题，确实很经典，但不太好看懂。<br />&nbsp;&nbsp;&nbsp; *简单：<br />&nbsp;&nbsp;&nbsp; pku3070 Fibonacci<br />&nbsp;&nbsp;&nbsp; pku3233 Matrix Power Series<br />&nbsp;&nbsp;&nbsp; pku3735 Training little cats<br />8.高次同余方程<br /><br />&nbsp;&nbsp;&nbsp; 有关这个问题我应该是没什么发言权了，A^B%C=D，我现在只会求D和B，唉，很想知道A该怎么求。就先推荐几道题目吧，这里涉及到了一个baby-step，giant-step算法。<br />&nbsp;&nbsp;&nbsp; pku3243 Clever Y<br />&nbsp;&nbsp;&nbsp; pku2417 Discrete Logging<br />9.容斥原理，鸽巢原理<br /><br />&nbsp;&nbsp;&nbsp; 很有用的两个定理，但好像单独考这两个定理的不是很多。<br />&nbsp;&nbsp;&nbsp; *鸽巢原理：<br />&nbsp;&nbsp;&nbsp; pku2356 Find a multiple<br />&nbsp;&nbsp;&nbsp; pku3370 Halloween treats<br />&nbsp;&nbsp;&nbsp; *容斥原理：<br />&nbsp;&nbsp;&nbsp; hdu1695 GCD<br />&nbsp;&nbsp;&nbsp; hdu2461 Rectangles<br />10.找规律，推公式<br /><br />&nbsp;&nbsp;&nbsp; 这类题目的设计一般都非常巧妙，真的是很难想出来，但只要找到规律或推出公式，就不是很难了。我很多都是在参考别人思路的情况下做的，能自己想出来真的很不容易。<br />&nbsp;&nbsp;&nbsp; *个人感觉都挺不错的：<br />&nbsp;&nbsp;&nbsp; pku3372 Candy Distribution<br />&nbsp;&nbsp;&nbsp; pku3244 Difference between Triplets<br />&nbsp;&nbsp;&nbsp; pku1809 Regetni<br />&nbsp;&nbsp;&nbsp; pku1831 不定方程组<br />&nbsp;&nbsp;&nbsp; pku1737 Connected Graph<br />&nbsp;&nbsp;&nbsp; pku2480 Longge's problem<br />&nbsp;&nbsp;&nbsp; pku1792 Hexagonal Routes<br />11.排列组合，区间计数，计数序列<br /><br />&nbsp;&nbsp;&nbsp; 这些题目可能需要一些组合数学知识，基本上高中的知识就够了。区间计数问题一般不难，但写的时候需要仔细一些，各种情况要考虑到位。至于像卡特兰数，差分序列，斯特灵数&#183;&#183;&#183;都还挺有意思，可以去看看《组合数学》。<br />&nbsp;&nbsp;&nbsp; *简单题：<br />&nbsp;&nbsp;&nbsp; pku1850 Code<br />&nbsp;&nbsp;&nbsp; pku1150 The Last Non-zero Digit<br />&nbsp;&nbsp;&nbsp; pku1715 Hexadecimal Numbers<br />&nbsp;&nbsp;&nbsp; pku2282 The Counting Problem<br />&nbsp;&nbsp;&nbsp; pku3286 How many 0's?<br />&nbsp;&nbsp;&nbsp; *推荐：<br />&nbsp;&nbsp;&nbsp; pku3252 Round Numbers<br />&nbsp;&nbsp;&nbsp; *计数序列：<br />&nbsp;&nbsp;&nbsp; pku1430 Binary Stirling Numbers<br />&nbsp;&nbsp;&nbsp; pku2515 Birthday Cake<br />&nbsp;&nbsp;&nbsp; pku1707 Sum of powers<br />12.二分法<br /><br />&nbsp;&nbsp;&nbsp; 二分的思想还是很重要的，这里就简单推荐几个纯粹的二分题。<br />&nbsp;&nbsp;&nbsp; *简单：<br />&nbsp;&nbsp;&nbsp; pku3273 Monthly Expense<br />&nbsp;&nbsp;&nbsp; pku3258 River Hopscotch<br />&nbsp;&nbsp;&nbsp; pku1905 Expanding Rods<br />&nbsp;&nbsp;&nbsp; pku3122 Pie<br />&nbsp;&nbsp;&nbsp; *推荐：<br />&nbsp;&nbsp;&nbsp; pku1845 Sumdiv<br />13.稳定婚姻问题<br /><br />&nbsp;&nbsp;&nbsp; 无意中接触到这个算法，还蛮有意思的，《组合数学》中有详细的介绍。<br />&nbsp;&nbsp;&nbsp; pku3487 The Stable Marriage Problem<br />&nbsp;&nbsp;&nbsp; zoj1576 Marriage is Stable<br />14.数位类统计问题<br /><br />&nbsp;&nbsp;&nbsp; 在航点月赛中第一次接触到这类问题，scau大牛little龙推荐我看了一篇论文，09年刘聪的《浅谈数位类统计问题》，这篇论文相当精彩，也相当详 细，每道题都有详细的分析和作者的参考代码。所以我也没什么可说的了，这些题的代码我博客里也就不贴了，大家直接去看论文吧。<br />&nbsp;&nbsp;&nbsp; 简单：<br />&nbsp;&nbsp;&nbsp; ural1057 Amount of degrees<br />&nbsp;&nbsp;&nbsp; spoj1182 Sorted bit squence<br />&nbsp;&nbsp;&nbsp; hdu3271 SNIBB<br />&nbsp;&nbsp;&nbsp; 较难：<br />&nbsp;&nbsp;&nbsp; spoj2319 Sequence<br />&nbsp;&nbsp;&nbsp; sgu390 Tickets</div><img src ="http://www.cppblog.com/ArcTan/aggbug/173228.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-04-30 10:58 <a href="http://www.cppblog.com/ArcTan/articles/173228.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ACdream 1159(组合-递推-优化)</title><link>http://www.cppblog.com/ArcTan/articles/173154.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Sun, 29 Apr 2012 09:15:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/173154.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/173154.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/173154.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/173154.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/173154.html</trackback:ping><description><![CDATA[<div><div><center><h2>1159: One Theorem, One Year </h2>Time Limit: 1 Sec&nbsp;&nbsp;Memory Limit: 128 MB<br />Submit: 21&nbsp;&nbsp;Solved: 12<br />[<a href="http://acdreamoj.sinaapp.com/submitpage.php?id=1159">Submit</a>][<a href="http://acdreamoj.sinaapp.com/problemstatus.php?id=1159">Status</a>][<a href="http://acdreamoj.sinaapp.com/bbs.php?pid=1159">Web Board</a>]</center><h2>Description</h2><div><p>A number is <strong>Almost-K-Prime</strong> if it has exactly <strong>K</strong> prime numbers (not necessarily distinct) in its prime factorization. For example, 12 = 2 * 2 * 3 is an <strong>Almost-3-Prime</strong> and 32 = 2 * 2 * 2 * 2 * 2 is an <strong>Almost-5-Prime</strong> number. A number <strong>X</strong> is called <strong>Almost</strong><strong>-K-First-P-Prim</strong><strong><span style="line-height:115%">e</span></strong><span style="line-height:115%"> if it satisfies the following criterions:</span></p> <p style="text-align:justify;text-indent:-.25in"><span style="font-size:12.0pt;line-height:115%;font-family:&quot;Garamond&quot;,&quot;serif&quot;">1.<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-size:12.0pt;line-height:115%;font-family:&quot;Garamond&quot;,&quot;serif&quot;">X</span></strong><span style="font-size:12.0pt;line-height:115%;font-family:&quot;Garamond&quot;,&quot;serif&quot;"> is an <strong>Almost-K-Prime</strong> and</span></p> <p style="text-align:justify;text-indent:-.25in"><span style="font-size:12.0pt;line-height:115%;font-family:&quot;Garamond&quot;,&quot;serif&quot;">2.<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-size:12.0pt;line-height:115%;font-family:&quot;Garamond&quot;,&quot;serif&quot;">X</span></strong><span style="font-size:12.0pt;line-height:115%;font-family:&quot;Garamond&quot;,&quot;serif&quot;"> has <strong>all and only</strong> the first <strong>P (P &#8804; K)</strong> primes in its prime factorization.</span></p> <p>For example, if <strong>K=3</strong> and <strong>P=2</strong>, the numbers 18 = 2 * 3 * 3 and 12 = 2 * 2 * 3 satisfy the above criterions. And 630 = 2 * 3 * 3 * 5 * 7 is an example of <strong>Almost-5-First-4-Pime</strong>.</p> <p>For a given <strong>K</strong> and <strong>P</strong>, your task is to calculate the summation of <strong>&#934;(X)</strong> for all integers <strong>X</strong> such that <strong>X</strong> is an <strong>Almost-K-First-P-Prime</strong>.</p></div><h2>Input</h2><div><p>Input starts with an integer <strong>T (</strong><strong>&#8804; 10000)</strong>, denoting the number of test cases.</p> <p>Each case starts with a line containing two integers <strong>K (1 &#8804; K &#8804; 500)</strong> and <strong>P (1 &#8804; P &#8804; K)</strong>.</p></div><h2>Output</h2><div><p>For each case, print the case number and the result modulo</p> <strong>1000000007</strong> <p>.</p></div><h2>Sample Input</h2> 			<div><span>3 3 2 5 4 99 45</span></div><h2>Sample Output</h2> 			<div><span>Case 1: 10 Case 2: 816 Case 3: 49939643 </span></div></div><br />求出素数后然后，然后然后就是排列组合的问题了。<br />dp[i][j]表示在前i个素数里选j个数相乘的和<br />dp[i][j]= dp[i-1][j-k]*exp[i][k]&nbsp;&nbsp; 0&lt;=k&lt;=j求和<br />这里边算边模<br />a[i][j]表示在前i个素数里j个数组成结果，则<br />a[i][j]=mul[i]*dp[i][j-1]<br />这里也边算模。<br /><div><img src="data:image/png;base64,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" alt="" /></div><br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include&lt;stdio.h&gt;<br />#include&lt;string.h&gt;<br />#include&lt;math.h&gt;<br />int&nbsp;pri</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">550</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">,</span><span style="color: #000000; ">b</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">3705</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #008000; ">;&nbsp; //这里之前是3500要错哦<br /></span><span style="color: #000000; ">long&nbsp;long&nbsp;dp</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">505</span><span style="color: #800000; font-weight: bold; ">][</span><span style="color: #800000; ">505</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">,</span><span style="color: #000000; ">a</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">505</span><span style="color: #800000; font-weight: bold; ">][</span><span style="color: #800000; ">505</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">long&nbsp;long&nbsp;mod</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1000000007</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">int&nbsp;GetPri()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i</span><span style="color: #000000; ">,</span><span style="color: #000000; ">j</span><span style="color: #000000; ">,</span><span style="color: #000000; ">tot</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;memset(b</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">sizeof(b))</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">2</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;tot</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #008000; ">;&nbsp;&nbsp;&nbsp; //写了那么素数筛法了，居然会在这里载！！！！<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(i&lt;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">3700</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(b</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">)&nbsp;&nbsp;&nbsp;&nbsp;i++</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pri</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">++tot</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(j&lt;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">3700</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">j</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j+</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">}<br /><br />int&nbsp;Cal()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i</span><span style="color: #000000; ">,</span><span style="color: #000000; ">j</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;long&nbsp;sum</span><span style="color: #000000; ">,</span><span style="color: #000000; ">mul</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;dp</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">0</span><span style="color: #800000; font-weight: bold; ">][</span><span style="color: #800000; ">0</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #008000; ">;</span><span style="color: #008000; ">&nbsp;i&lt;=500&nbsp;;&nbsp;i++&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;dp</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i</span><span style="color: #800000; font-weight: bold; ">][</span><span style="color: #800000; ">0</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #008000; ">;</span><span style="color: #008000; ">&nbsp;j&lt;=500&nbsp;;&nbsp;j++&nbsp;)</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(sum*pri</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">+dp</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i-1</span><span style="color: #800000; font-weight: bold; ">][</span><span style="color: #800000; ">j-1</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">*pri</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">)&nbsp;%&nbsp;mod</span><span style="color: #008000; ">;&nbsp;&nbsp; //哎，方程的优化，还是没有经验啊！！这里之前我是写了个三重的循环呢。可以迭代的啊。<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dp</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i</span><span style="color: #800000; font-weight: bold; ">][</span><span style="color: #800000; ">j</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(dp</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i-1</span><span style="color: #800000; font-weight: bold; ">][</span><span style="color: #800000; ">j</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">+sum)&nbsp;%&nbsp;mod</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;mul</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #008000; ">;</span><span style="color: #008000; ">&nbsp;i&lt;=500&nbsp;;&nbsp;i++&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;mul</span><span style="color: #000000; ">=</span><span style="color: #000000; ">mul*(pri</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)&nbsp;%&nbsp;mod</span><span style="color: #008000; ">;&nbsp;&nbsp;&nbsp; //方程优化！！！<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #008000; ">;</span><span style="color: #008000; ">&nbsp;j&lt;=500&nbsp;;&nbsp;j++&nbsp;)</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i</span><span style="color: #800000; font-weight: bold; ">][</span><span style="color: #800000; ">j</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">mul*dp</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i</span><span style="color: #800000; font-weight: bold; ">][</span><span style="color: #800000; ">j-i</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">&nbsp;%&nbsp;mod</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />int&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;p</span><span style="color: #000000; ">,</span><span style="color: #000000; ">cas</span><span style="color: #000000; ">,</span><span style="color: #000000; ">n</span><span style="color: #000000; ">,</span><span style="color: #000000; ">m</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;GetPri()</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;Cal()</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;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;p)</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;cas</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(p--)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;n</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;m)</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Case&nbsp;%d:&nbsp;%lld\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">++cas</span><span style="color: #000000; ">,</span><span style="color: #000000; ">a</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">m</span><span style="color: #800000; font-weight: bold; ">][</span><span style="color: #800000; ">n</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">)</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">}<br /></span></div><br /><br />总结：方程的优化，降低维数！！！！！！！！！！！！！！！！！！！！<br />真的是弱爆了啊。。。。。。。。<br /></div><img src ="http://www.cppblog.com/ArcTan/aggbug/173154.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-04-29 17:15 <a href="http://www.cppblog.com/ArcTan/articles/173154.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj1284(欧拉函数 原根） </title><link>http://www.cppblog.com/ArcTan/articles/173056.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Sat, 28 Apr 2012 08:26:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/173056.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/173056.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/173056.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/173056.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/173056.html</trackback:ping><description><![CDATA[<div><p><span style="font-family:mceinline">原根Primitive Root</span></p> <p>　　设m是正整数，a是整数，若a模m的阶等于&#966;(m)，则称a为模m的一个原根。（其中&#966;(m)表示m的欧拉函数）</p> <p>　　假设一个数g对于P来说是原根，那么g^i mod P的结果两两不同,且有 1&lt;g&lt;P, 0&lt;i&lt;P,那么g可以称为是P的一个原根,归根到底就是g^(P-1) = 1 <br /></p><p>(mod P)当且当指数为P-1的时候成立.(这里P是素数).</p> <p>　　简单来说，g^i mod p &#8800; g^j mod p （p为素数）</p> <p>　　其中i&#8800;j且i, j介於1至(p-1)之间</p> <p>　　则g为p的原根。</p>  <pre><span>【算法】定理1：如果p有原根，则它恰有&#966;(&#966;(p))个不同的原根（无论p是否为素数都适用）     {x^i%p | 1 &lt;= i &lt;= p - 1} = {1,2,...,p-1} 等价于<br /></span>&nbsp;&nbsp; &nbsp;&nbsp; <span>{x^i%(p-1) | 1 &lt;= i &lt;= p - 1} = {0,1,2,...,p-2},    即为(p-1)的完全剩余系若x,x2...x(p-1)是(p-1)的完全剩余系,根据定理,可以推出若<br />&nbsp;</span>&nbsp;&nbsp; &nbsp;&nbsp; <span>gcd(x, p-1) = 1时, (1,x,...,x(p-2))也是(p-1)的完全剩余系    因为若x^i != x^j (mod p-1),那么x*x^i != x*x^j (mod p-1),    与条件m矛盾,<br /></span>&nbsp;&nbsp; &nbsp;&nbsp; <span>所以 x^i = x^j (mod p-1),    由此可以确定答案为Euler(p-1)<br /><br /><div>p的原根为euler(euler(p))，筛法求出欧拉函数。</div><div><img src="data:image/png;base64,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" alt="" /></div></span><br /></pre><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #000000; ">#include&lt;stdio.h&gt;<br />#include&lt;string.h&gt;<br />#include&lt;math.h&gt;<br />int&nbsp;p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">70007</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">int&nbsp;GetEula()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i</span><span style="color: #000000; ">,</span><span style="color: #000000; ">j</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #008000; ">;</span><span style="color: #008000; ">i&lt;=70000&nbsp;;i++&nbsp;)</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">2</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(i&lt;</span><span style="color: #000000; ">70000</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">&lt;i)&nbsp;&nbsp;&nbsp;&nbsp;i++</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(j&lt;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">70000</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">j</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">j</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">*(i-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)/i</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j+</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />int&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;n</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;GetEula()</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(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;n)</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;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">n-1</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">)</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">}<br /></span></div></div><img src ="http://www.cppblog.com/ArcTan/aggbug/173056.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-04-28 16:26 <a href="http://www.cppblog.com/ArcTan/articles/173056.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj2478(欧拉函数)--模板</title><link>http://www.cppblog.com/ArcTan/articles/172947.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Fri, 27 Apr 2012 10:14:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/172947.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/172947.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/172947.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/172947.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/172947.html</trackback:ping><description><![CDATA[首先是昨天一直wa的fzu 1769代码:<br /><div><img src="data:image/png;base64,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" alt="" /></div>有运行68ms的，膜拜膜拜，不知道怎么写的，得去学学那个算法。<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #000000; ">#include&lt;stdio.h&gt;<br />#include&lt;string.h&gt;<br />#include&lt;math.h&gt;<br />long&nbsp;long&nbsp;p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">3000005</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">int&nbsp;GetEula()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i</span><span style="color: #000000; ">,</span><span style="color: #000000; ">j</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #008000; ">;</span><span style="color: #008000; ">i&lt;=3000000&nbsp;;i++&nbsp;)</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">1</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">2</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(i&lt;</span><span style="color: #000000; ">3000000</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">&lt;i)&nbsp;&nbsp;&nbsp;&nbsp;i++</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(j&lt;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">3000000</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">j</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">j</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">*(i-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)/i</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j+</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />int&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i</span><span style="color: #000000; ">,</span><span style="color: #000000; ">a</span><span style="color: #000000; ">,</span><span style="color: #000000; ">b</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;long&nbsp;s</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;GetEula()</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;a</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;b)</span><span style="color: #000000; ">==</span><span style="color: #000000; ">2</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(a&lt;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">b)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s+</span><span style="color: #000000; ">=</span><span style="color: #000000; ">p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">a++</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&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; ">,</span><span style="color: #000000; ">s)</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">}<br /></span></div>呵呵，用筛法来请欧拉函数还是我一下子冒出来的想法，嗯，这个直觉不错。<br />不过一直WA一直WA,原来是数据类型的问题。<br />poj2478也是这个问题，哎哎，以后要多注意数据类型这个东西了！！！<br /><div><img src="data:image/png;base64,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" alt="" /></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #000000; ">#include&lt;stdio.h&gt;<br />#include&lt;string.h&gt;<br />#include&lt;math.h&gt;<br />long&nbsp;long&nbsp;p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">3000005</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">int&nbsp;GetEula()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i</span><span style="color: #000000; ">,</span><span style="color: #000000; ">j</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #008000; ">;</span><span style="color: #008000; ">i&lt;=3000000&nbsp;;i++&nbsp;)</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">1</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">2</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(i&lt;</span><span style="color: #000000; ">3000000</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">i</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">&lt;i)&nbsp;&nbsp;&nbsp;&nbsp;i++</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(j&lt;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">3000000</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">j</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">j</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #000000; ">*(i-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)/i</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j+</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />int&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i</span><span style="color: #000000; ">,</span><span style="color: #000000; ">n</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;long&nbsp;s</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;GetEula()</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(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;n)</span><span style="color: #000000; ">==</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&amp;&amp;n)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #008000; ">;<br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(n)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s+</span><span style="color: #000000; ">=</span><span style="color: #000000; ">p</span><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">n--</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&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; ">,</span><span style="color: #000000; ">s)</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #008000; ">;<br /></span><span style="color: #000000; ">}<br /></span></div><br />数论刷水题ing&#8230;&#8230;<br /><img src ="http://www.cppblog.com/ArcTan/aggbug/172947.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-04-27 18:14 <a href="http://www.cppblog.com/ArcTan/articles/172947.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj 2689（筛法求素数的应用）</title><link>http://www.cppblog.com/ArcTan/articles/172365.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Sun, 22 Apr 2012 12:41:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/172365.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/172365.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/172365.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/172365.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/172365.html</trackback:ping><description><![CDATA[<div>http://poj.org/problem?id=2689<br /><br />筛法筛去区间内的合数。<br />开哥说是水题一个！不过，我WA了一天。二分查找的错！！！<br /><div>141MS AC<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #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 />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">math.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;inf&nbsp;500000</span><span style="color: #000000; "><br />unsigned&nbsp;prime[</span><span style="color: #000000; ">50005</span><span style="color: #000000; ">],b[</span><span style="color: #000000; ">5000005</span><span style="color: #000000; ">],a[</span><span style="color: #000000; ">500005</span><span style="color: #000000; ">],tot;<br />unsigned&nbsp;L,U;<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;b_search(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;l,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;r,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;x)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;mid;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(l</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">r)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mid</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(l</span><span style="color: #000000; ">+</span><span style="color: #000000; ">r)</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;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(prime[mid]</span><span style="color: #000000; ">==</span><span style="color: #000000; ">x)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;mid;<br />&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;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(prime[mid]</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">x)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l</span><span style="color: #000000; ">=</span><span style="color: #000000; ">mid</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;</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;r</span><span style="color: #000000; ">=</span><span style="color: #000000; ">mid</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;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;l;<br />}<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;Getprime()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i,j;<br />&nbsp;&nbsp;&nbsp;&nbsp;memset(b,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(b));<br />&nbsp;&nbsp;&nbsp;&nbsp;tot</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;i</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; ">while</span><span style="color: #000000; ">&nbsp;(i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">inf)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(b[i])&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prime[</span><span style="color: #000000; ">++</span><span style="color: #000000; ">tot]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(j</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">inf)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b[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;j</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;tot</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />}<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i,j,k,total;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;max,min,maxi,mini;<br />&nbsp;&nbsp;&nbsp;&nbsp;Getprime();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">L,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">U)</span><span style="color: #000000; ">==</span><span style="color: #000000; ">2</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(b,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(b));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k</span><span style="color: #000000; ">=</span><span style="color: #000000; ">b_search(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,tot,(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">)sqrt(U</span><span style="color: #000000; ">*</span><span style="color: #000000; ">1.0</span><span style="color: #000000; ">)</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1.0</span><span style="color: #000000; ">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</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; ">while</span><span style="color: #000000; ">&nbsp;(i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">k</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)&nbsp;&nbsp;&nbsp;&nbsp; //这里改为k+1就AC了！！！呜呜呜啎 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">L</span><span style="color: #000000; ">%</span><span style="color: #000000; ">prime[i];<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;(j</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">prime[i]</span><span style="color: #000000; ">-</span><span style="color: #000000; ">j;<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;(j</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">U</span><span style="color: #000000; ">-</span><span style="color: #000000; ">L)<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;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(j</span><span style="color: #000000; ">+</span><span style="color: #000000; ">L</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">prime[i])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b[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;j</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">prime[i];<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;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;total</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</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; ">&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; ">U</span><span style="color: #000000; ">-</span><span style="color: #000000; ">L&nbsp;;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">&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;(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">b[i]</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">L</span><span style="color: #000000; ">+</span><span style="color: #000000; ">i</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">2</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[</span><span style="color: #000000; ">++</span><span style="color: #000000; ">total]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">L</span><span style="color: #000000; ">+</span><span style="color: #000000; ">i;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(total</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">There&nbsp;are&nbsp;no&nbsp;adjacent&nbsp;primes.\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&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;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max</span><span style="color: #000000; ">=</span><span style="color: #000000; ">min</span><span style="color: #000000; ">=</span><span style="color: #000000; ">a[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">]</span><span style="color: #000000; ">-</span><span style="color: #000000; ">a[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">];maxi</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;mini</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;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">3</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">total&nbsp;;i</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;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(a[i]</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; ">]</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">max)<br />&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;max</span><span style="color: #000000; ">=</span><span style="color: #000000; ">a[i]</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; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxi</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</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;}<br />&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;(a[i]</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; ">]</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">min)<br />&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;min</span><span style="color: #000000; ">=</span><span style="color: #000000; ">a[i]</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; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mini</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</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;}<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(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d,%d&nbsp;are&nbsp;closest,&nbsp;%d,%d&nbsp;are&nbsp;most&nbsp;distant.\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,a[mini],a[mini</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">],a[maxi],a[maxi</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;}<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></div></div><img src ="http://www.cppblog.com/ArcTan/aggbug/172365.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-04-22 20:41 <a href="http://www.cppblog.com/ArcTan/articles/172365.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>欧拉函数（资料+模板）</title><link>http://www.cppblog.com/ArcTan/articles/172265.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Sat, 21 Apr 2012 09:28:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/172265.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/172265.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/172265.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/172265.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/172265.html</trackback:ping><description><![CDATA[<span style="font-weight: bold"><a href="http://zh.wikipedia.org/wiki/%E6%AC%A7%E6%8B%89%E5%87%BD%E6%95%B0">http://zh.wikipedia.org/wiki/%E6%AC%A7%E6%8B%89%E5%87%BD%E6%95%B0</a><br />欧拉函数 ：</span><br />欧拉函数是数论中很重要的一个函数，欧拉函数是指：对于一个正整数 n ，小于 n 且和 n 互质的正整数（包括 1）的个数，记作 &#966;(n) 。 <br /><br /><span style="font-weight: bold">完全余数集合：</span><br />定义小于 n 且和 n 互质的数构成的集合为 Zn ，称呼这个集合为 n 的完全余数集合。 显然 |Zn| ＝&#966;(n) 。<br /><br /><span style="font-weight: bold">有关性质：</span><br />对于素数 p ，&#966;(p) = p -1 。<br />对于两个不同素数 p， q ，它们的乘积 n = p * q 满足 &#966;(n) = (p -1) * (q -1)&nbsp; 。<br /><span style="color: #ff0000">这是因为 Zn = {1, 2, 3,&nbsp; ... , n - 1} - {p, 2p, ... , (q - 1) * p} - {q, 2q, ... , (p - 1) * q} ， 则 &#966;(n) = (n - 1) - (q - 1) - (p - 1) = (p -1) * (q -1)&nbsp; ＝</span><span style="color: #ff0000">&#966;(p) * </span><span style="color: #ff0000">&#966;(q)</span><span style="color: #ff0000"> 。</span><br /><br /><span style="font-weight: bold">欧拉定理 ：</span><br />对于互质的正整数 a 和 n ，有 <span style="font-weight: bold">a</span><sup style="font-weight: bold">&#966;(n)</sup><span style="font-weight: bold">&nbsp; &#8801; 1 mod n</span>&nbsp; 。<br /><span style="font-weight: bold">证明：<br /></span>( 1 ) 令 <span style="font-size: small"><font size="2">Zn = {x<span style="font-size: x-small"><sub>1</sub></span>, x<span style="font-size: x-small"><sub>2</sub></span>, ..., x<span style="font-size: x-small"><sub>&#966;(n)</sub></span>} </font></span>， <span style="font-size: small"><font size="2">S</font></span> <span style="font-size: small"><font size="2">= {a * x<span style="font-size: x-small"><sub>1</sub></span> <span style="font-size: x-small">mod n</span>, a * x<span style="font-size: x-small"><sub>2</sub></span> <span style="font-size: x-small">mod n</span>, ... , a * x<span style="font-size: x-small"><sub>&#966;(n)</sub></span> <span style="font-size: x-small">mod n</span>} </font></span>，<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 则 Zn = S 。<br /><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#9312; 因为 a 与 n 互质，</span><font size="2"><span style="font-size: small"> x</span></font><font size="1"><span style="font-size: x-small"><sub>i</sub></span></font><span style="color: #ff0000"> </span><span style="color: #ff0000">(1 &#8804; i &#8804; &#966;(n)) </span><span style="color: #ff0000">与 n 互质， 所以 a * </span><font size="2"><span style="font-size: small">x</span></font><font size="1"><span style="font-size: x-small"><sub>i</sub></span></font><span style="color: #ff0000">&nbsp; 与 n 互质，所以 a * </span><font size="2"><span style="font-size: small">x</span></font><font size="1"><span style="font-size: x-small"><sub>i</sub></span></font><span style="color: #ff0000">&nbsp; mod n &#8712; Zn 。</span><br style="color: #ff0000" /><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#9313; 若 i &#8800; j ， 那么 </span><font size="2"><span style="font-size: small">x</span></font><font size="1"><sub style="color: #ff0000"><span style="font-size: x-small">i</span></sub></font><span style="color: #ff0000"> &#8800; </span><span style="font-size: small"><font size="2">x</font></span><sub style="color: #ff0000">j</sub><span style="color: #ff0000">，且由 a, n互质可得 </span><font size="2"><span style="font-size: small">a * x</span></font><font size="1"><sub style="color: #ff0000"><span style="font-size: x-small">i</span></sub></font><span style="color: #ff0000"> mod n &#8800; </span><span style="font-size: small"><font size="2">a * x</font></span><sub style="color: #ff0000">j</sub><span style="color: #ff0000"> mod n （消去律）。</span><br /><br />( 2 )&nbsp;&nbsp;&nbsp;&nbsp; <font size="2"><span style="font-size: small">a<sup>&#966;(n) </sup>* </span><span style="font-size: small">x<span style="font-size: x-small"><sub>1 </sub></span></span><span style="font-size: small">* </span><span style="font-size: small">x<span style="font-size: x-small"><sub>2</sub></span></span><span style="font-size: small"> *... * </span><span style="font-size: small">x<span style="font-size: x-small"><sub>&#966;(n)</sub></span></span></font><span style="font-size: small"><font size="2"> <span style="font-size: x-small">mod n</span> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span>&#8801;<font size="2"><span style="font-size: small"> (</span><span style="font-size: small">a * x<span style="font-size: x-small"><sub>1</sub></span></span><span style="font-size: small">) * (</span><span style="font-size: small">a * x<span style="font-size: x-small"><sub>2</sub></span></span><span style="font-size: small">) * ... * (</span><span style="font-size: small">a * x<span style="font-size: x-small"><sub>&#966;(n)</sub></span></span></font><span style="font-size: small"><font size="2">) </font><span style="font-size: x-small"><font size="1">mod n<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span></span>&#8801;<font size="2"><span style="font-size: small"><span style="font-size: x-small"><span style="font-size: small"> </span></span></span><span style="font-size: small">(</span><span style="font-size: small">a * x<span style="font-size: x-small"><sub>1</sub></span></span><span style="font-size: small"> </span></font><font size="1"><span style="font-size: small"><span style="font-size: x-small">mod n</span></span></font><font size="2"><span style="font-size: small">) * (</span><span style="font-size: small">a * x<span style="font-size: x-small"><sub><font size="1">2 </font></sub></span></span></font><span style="font-size: small"><span style="font-size: x-small"><font size="1">mod n</font></span></span><font size="2"><span style="font-size: small">) * ... * (</span><span style="font-size: small">a * x<span style="font-size: x-small"><sub>&#966;(n)</sub></span></span><span style="font-size: small"> </span></font><font size="1"><span style="font-size: small"><span style="font-size: x-small">mod n</span></span></font><span style="font-size: small"><font size="2">) </font><span style="font-size: x-small"><font size="1">mod n<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span>&#8801;<font size="2"><span style="font-size: small"><span style="font-size: x-small"><span style="font-size: small">&nbsp; </span></span></span><span style="font-size: small">x<span style="font-size: x-small"><sub>1 </sub></span></span><span style="font-size: small"><span style="font-size: x-small"><span style="font-size: small">* </span></span></span><span style="font-size: small">x<span style="font-size: x-small"><sub>2 </sub></span></span><span style="font-size: small"><span style="font-size: x-small"><span style="font-size: small">* ... * </span></span></span><span style="font-size: small">x<span style="font-size: x-small"><sub><font size="1">&#966;(n) </font></sub></span></span></font><span style="font-size: small"><font size="1"><span style="font-size: x-small">mod n<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对比等式的左右两端<span style="font-size: x-small">，因为 </span></span><span style="font-size: small"></span></font><font size="2"><span style="font-size: small">x</span></font><font size="1"><span style="font-size: x-small"><sub>i</sub></span></font><font size="2"><span style="color: #000000">&nbsp; (1 &#8804; i &#8804; &#966;(n)) 与 n 互质，所以&nbsp;</span>a<sup>&#966;(n)</sup>&nbsp;<span style="color: #000000"> </span>&#8801;&nbsp; 1 mod n （消去律）。<br />注：<br />消去律：如果 gcd(c,p) = 1 ，则 ac &#8801; bc mod p &#8658; a &#8801; b mod p 。<br /><br /><span style="font-weight: bold">费马定理 ：</span><br />若正整数 a 与素数 p 互质，则有 <span style="font-weight: bold">a</span><sup style="font-weight: bold">p - 1</sup><span style="font-weight: bold"> &#8801; 1 mod p</span> 。</font><br /></span><br />这个是欧拉定理的特殊情况，p是素数，则p的欧拉函数就是p-1.<br /><br /><span style="font-weight: bold; color: #000000"><font size="2">补充：欧拉函数公式<br /></font></span>
<div class="postText" sizset="0" sizcache="0">
<h2 style="font-weight: normal; color: #0000ff">( 1 ) p<sup>k</sup> 的欧拉函数</h2>
<p>对于给定的一个素数 p ， &#966;(p) = p -1。则对于正整数 n = p<sup>k</sup> ，</p><pre><strong> </strong><span style="font-size: small"><span style="font-weight: bold"><font size="2">&#966;</font></span></span><strong><font size="2"><span style="font-size: small">(n) = p<sup>k</sup> - p<sup>k -1</sup></span><br /></font>  </strong><br /><span style="color: #ff0000">证明：</span><br style="color: #ff0000" /><span style="color: #ff0000"> 小于 p</span><sup style="color: #ff0000">k</sup><span style="color: #ff0000"> 的正整数个数为 p</span><sup style="color: #ff0000">k</sup><span style="color: #ff0000"> - 1个，其中</span><br style="color: #ff0000" /><span style="color: #ff0000"> 和 p</span><sup style="color: #ff0000">k</sup><span style="color: #ff0000"> 不互质的正整数有</span><strong style="color: #ff0000">{p * 1,p * 2,...,p * (p<sup>k - 1</sup>-1)}</strong><span style="color: #ff0000"> 共计 </span><strong style="color: #ff0000">p<sup>k - 1</sup> - 1</strong><span style="color: #ff0000"> 个</span><br style="color: #ff0000" /><span style="color: #ff0000"> 所以 &#966;(n) = p</span><sup style="color: #ff0000">k</sup><span style="color: #ff0000"> - 1 - (p</span><sup style="color: #ff0000">k - 1</sup><span style="color: #ff0000"> - 1) = p</span><sup style="color: #ff0000">k</sup><span style="color: #ff0000"> - p</span><sup style="color: #ff0000">k - 1</sup><span style="color: #ff0000"> 。</span></pre>
<h2 style="font-weight: normal; color: #0000ff">( 2 ) p * q 的欧拉函数</h2>
<p>假设 p, q是两个互质的正整数，则 p * q 的欧拉函数为</p>
<p style="font-weight: bold">&#966;(p * q) = &#966;(p) * &#966;(q) ， gcd(p, q) = 1 。 </p><pre><span style="color: #ff0000">证明：</span><br style="color: #ff0000" /><span style="color: #ff0000"> 令 n = p * q ， gcd(p,q) = 1</span><br style="color: #ff0000" /><span style="color: #ff0000"> 根据中国余数定理，有</span><br style="color: #ff0000" /><span style="color: #ff0000"> Zn 和 Zp &#215; Zq 之间存在一一映射<br /><span style="font-weight: bold">（我的想法是： a </span></span><span style="font-weight: bold; color: #ff0000">&#8712; Zp ， b &#8712; Zq &#8660; b * p + a * q &#8712; Zn 。</span><span style="color: #ff0000"><span style="font-weight: bold">）</span><br style="color: #ff0000" /></span><span style="color: #ff0000"> 所以 n 的完全余数集合的元素个数等于集合 Zp &#215; Zq 的元素个数。</span><br style="color: #ff0000" /><span style="color: #ff0000"> 而后者的元素个数为 &#966;(p) * &#966;(q) ，所以有</span><br style="color: #ff0000" /><span style="color: #ff0000"> &#966;(p * q) = &#966;(p) * &#966;(q) 。</span><br /></pre>
<h2 style="font-weight: normal; color: #0000ff">( 3 ) 任意正整数的欧拉函数</h2>
<p>任意一个整数 n 都可以表示为其素因子的乘积为： </p><pre>    <span style="font-weight: bold">  I</span><br /><span style="font-weight: bold"> n = &#8719;  <span style="font-size: medium"><font size="3">p</font></span></span><sub style="font-weight: bold">i</sub><sup style="font-weight: bold">k<sub>i</sub></sup> (I 为 n 的素因子的个数)<br />     <span style="font-weight: bold">i=1</span><br /></pre>
<p>根据前面两个结论，很容易得出它的欧拉函数为： </p><pre><strong><br />         I                      I<br /> &#934;(n) = &#8719;  <font size="3"><span style="font-size: medium">p</span><sub>i</sub><sup>k<sub>i </sub>-1</sup>(<span style="font-size: medium">p</span></font><span style="font-size: x-small"><sub style="font-weight: normal"><font size="1">i </font></sub></span>-1) = n </strong><strong><strong>&#8719;</strong></strong><strong> (1 - 1 / <font size="3"><span style="font-size: medium">p</span>i)<br />        i=1                   </font></strong><strong><strong> i=1</strong></strong></pre>
<p>对于任意 n &gt; 2，<span style="font-weight: bold">2 | &#934;(n</span>) ,因为必存在&nbsp; <strong><strong><span style="font-size: medium"><font size="3">p</font></span><span style="font-size: x-small"><sub style="font-weight: normal"><font size="1">i </font></sub></span>-1 </strong></strong>是偶数。</p></div><br />转自：<a href="http://blog.csdn.net/hillgong/article/details/4214327">http://blog.csdn.net/hillgong/article/details/4214327</a><br /><br />以下程序在<a href="http://acm.hrbeu.edu.cn/index.php?act=problem&amp;id=1001&amp;cid=25">http://acm.hrbeu.edu.cn/index.php?act=problem&amp;id=1001&amp;cid=25</a>测试通过：<br /><br /><a href="http://acm.hrbeu.edu.cn/index.php?act=showce&amp;runid=182002" target="_blank"><span class="err">Compile E</a><a href="http://acm.hrbeu.edu.cn/index.php?act=showce&amp;runid=182002" target="_blank">rror</a><a href="http://acm.hrbeu.edu.cn/index.php?act=showce&amp;runid=182002" target="_blank">&nbsp;一次 WA两次 AC：3Ms<br />总结：代码要写得快，熟练。一定要注意注意越界溢出啊啊啊啊！！！<br /></span></a>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><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 /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">string</span><span style="color: #000000">.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">math.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;inf&nbsp;50000</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;prime[</span><span style="color: #000000">10005</span><span style="color: #000000">],b[</span><span style="color: #000000">51005</span><span style="color: #000000">],tot;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;get_prime()<br /><img id="Codehighlighter1_119_365_Open_Image" onclick="this.style.display='none'; Codehighlighter1_119_365_Open_Text.style.display='none'; Codehighlighter1_119_365_Closed_Image.style.display='inline'; Codehighlighter1_119_365_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_119_365_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_119_365_Closed_Text.style.display='none'; Codehighlighter1_119_365_Open_Image.style.display='inline'; Codehighlighter1_119_365_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_119_365_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_119_365_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i,j;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;memset(b,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(b));<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;tot</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">2</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(i</span><span style="color: #000000">&lt;</span><span style="color: #000000">inf)<br /><img id="Codehighlighter1_203_352_Open_Image" onclick="this.style.display='none'; Codehighlighter1_203_352_Open_Text.style.display='none'; Codehighlighter1_203_352_Closed_Image.style.display='inline'; Codehighlighter1_203_352_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_203_352_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_203_352_Closed_Text.style.display='none'; Codehighlighter1_203_352_Open_Image.style.display='inline'; Codehighlighter1_203_352_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_203_352_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_203_352_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(b[i])&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prime[</span><span style="color: #000000">++</span><span style="color: #000000">tot]</span><span style="color: #000000">=</span><span style="color: #000000">i;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000">=</span><span style="color: #000000">i;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(j</span><span style="color: #000000">&lt;</span><span style="color: #000000">inf)<br /><img id="Codehighlighter1_298_346_Open_Image" onclick="this.style.display='none'; Codehighlighter1_298_346_Open_Text.style.display='none'; Codehighlighter1_298_346_Closed_Image.style.display='inline'; Codehighlighter1_298_346_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_298_346_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_298_346_Closed_Text.style.display='none'; Codehighlighter1_298_346_Open_Image.style.display='inline'; Codehighlighter1_298_346_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_298_346_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_298_346_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b[j]</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000">+=</span><span style="color: #000000">i;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;tot</span><span style="color: #000000">--</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br /><img id="Codehighlighter1_379_830_Open_Image" onclick="this.style.display='none'; Codehighlighter1_379_830_Open_Text.style.display='none'; Codehighlighter1_379_830_Closed_Image.style.display='inline'; Codehighlighter1_379_830_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_379_830_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_379_830_Closed_Text.style.display='none'; Codehighlighter1_379_830_Open_Image.style.display='inline'; Codehighlighter1_379_830_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_379_830_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_379_830_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i,j,k,p,n,m;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&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;ans;&nbsp;&nbsp;&nbsp; //这里之前溢出 wa 2次！<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;get_prime();<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(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">==</span><span style="color: #000000">1</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">n)<br /><img id="Codehighlighter1_469_814_Open_Image" onclick="this.style.display='none'; Codehighlighter1_469_814_Open_Text.style.display='none'; Codehighlighter1_469_814_Closed_Image.style.display='inline'; Codehighlighter1_469_814_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_469_814_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_469_814_Closed_Text.style.display='none'; Codehighlighter1_469_814_Open_Image.style.display='inline'; Codehighlighter1_469_814_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_469_814_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_469_814_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000">=</span><span style="color: #000000">m</span><span style="color: #000000">=</span><span style="color: #000000">n;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(i</span><span style="color: #000000">&lt;=</span><span style="color: #000000">tot)<br /><img id="Codehighlighter1_532_737_Open_Image" onclick="this.style.display='none'; Codehighlighter1_532_737_Open_Text.style.display='none'; Codehighlighter1_532_737_Closed_Image.style.display='inline'; Codehighlighter1_532_737_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_532_737_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_532_737_Closed_Text.style.display='none'; Codehighlighter1_532_737_Open_Image.style.display='inline'; Codehighlighter1_532_737_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_532_737_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_532_737_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(n</span><span style="color: #000000">%</span><span style="color: #000000">prime[i]</span><span style="color: #000000">==</span><span style="color: #000000">0</span><span style="color: #000000">)<br /><img id="Codehighlighter1_577_710_Open_Image" onclick="this.style.display='none'; Codehighlighter1_577_710_Open_Text.style.display='none'; Codehighlighter1_577_710_Closed_Image.style.display='inline'; Codehighlighter1_577_710_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_577_710_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_577_710_Closed_Text.style.display='none'; Codehighlighter1_577_710_Open_Image.style.display='inline'; Codehighlighter1_577_710_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_577_710_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_577_710_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000">=</span><span style="color: #000000">ans</span><span style="color: #000000">*</span><span style="color: #000000">(prime[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">prime[i];<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(n</span><span style="color: #000000">%</span><span style="color: #000000">prime[i]</span><span style="color: #000000">==</span><span style="color: #000000">0</span><span style="color: #000000">)<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n</span><span style="color: #000000">=</span><span style="color: #000000">n</span><span style="color: #000000">/</span><span style="color: #000000">prime[i];<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(n</span><span style="color: #000000">&gt;</span><span style="color: #000000">prime[tot])<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000">=</span><span style="color: #000000">ans</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;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">%lld\n</span><span style="color: #000000">"</span><span style="color: #000000">,ans);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  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 /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div><br /><br />做了好几天数论了，好不容易AC一个题目！！啊啊啊啊<br /><br /> <img src ="http://www.cppblog.com/ArcTan/aggbug/172265.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-04-21 17:28 <a href="http://www.cppblog.com/ArcTan/articles/172265.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>