﻿<?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++博客-ArefaElvis</title><link>http://www.cppblog.com/ArefaElvis/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 14 Apr 2026 23:07:11 GMT</lastBuildDate><pubDate>Tue, 14 Apr 2026 23:07:11 GMT</pubDate><ttl>60</ttl><item><title>CSU校赛J题(Burnside)</title><link>http://www.cppblog.com/ArefaElvis/archive/2010/10/10/129378.html</link><dc:creator>ArefaElvis</dc:creator><author>ArefaElvis</author><pubDate>Sun, 10 Oct 2010 15:17:00 GMT</pubDate><guid>http://www.cppblog.com/ArefaElvis/archive/2010/10/10/129378.html</guid><wfw:comment>http://www.cppblog.com/ArefaElvis/comments/129378.html</wfw:comment><comments>http://www.cppblog.com/ArefaElvis/archive/2010/10/10/129378.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArefaElvis/comments/commentRss/129378.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArefaElvis/services/trackbacks/129378.html</trackback:ping><description><![CDATA[这道题校赛时没人过，现在拿出来折腾了一番，着实经典，在此膜拜一下罗德安。<br>
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=" utf-8="">
<title></title>
<meta name="GENERATOR" content="OpenOffice.org 3.2  (Unix)">
<style type="text/css">
<!--
@page { margin: 0.79in }
H1 { margin-top: 0.24in; margin-bottom: 0.23in; line-height: 200%; text-align: center; page-break-inside: avoid; page-break-before: always }
H1.western { font-family: "Liberation Serif", serif; font-size: 22pt }
H1.cjk { font-family: "DejaVu Sans"; font-size: 22pt }
H1.ctl { font-family: "DejaVu Sans"; font-size: 22pt }
H2 { margin-top: 0.18in; margin-bottom: 0.18in; line-height: 173%; page-break-inside: avoid }
H2.western { font-family: "Arial", sans-serif; font-size: 16pt }
H2.cjk { font-family: "DejaVu Sans"; font-size: 16pt }
H2.ctl { font-family: "DejaVu Sans"; font-size: 16pt }
P { margin-bottom: 0.08in }
-->
</style>
<h1 class="western">Problem J. Smallbox<font face="DejaVu Sans">魔方</font></h1>
<h2 class="western">Description</h2>
<p style="text-indent: 0.29in; margin-bottom: 0in;"><em>n</em><font face="DejaVu Sans">阶魔方是一个</font><em>n</em>&#215;<em>n</em>&#215;<em>n</em><font face="DejaVu Sans">的立方体，有</font>6<font face="DejaVu Sans">个面，每个面又分为</font><em>n</em>&#215;<em>n</em><font face="DejaVu Sans">个小块，每个小块都可以涂上不同的颜色，如右边的图中分别是</font>3<font face="DejaVu Sans">阶和</font>2<font face="DejaVu Sans">阶魔方。</font></p>
<p style="text-indent: 0.29in; margin-bottom: 0in;"><font face="DejaVu Sans"><br></font></p>
<p style="text-indent: 0.29in; margin-bottom: 0in;"><font face="DejaVu Sans"><img alt="" src="http://www.cppblog.com/images/cppblog_com/arefaelvis/mofang.jpg" height="133" width="200">高阶魔方同时兼备了收藏，鉴赏及实用价值，而高阶的魔方内部构造极为复杂，设计困难。针对这个问题，</font>smallbox<font face="DejaVu Sans">公司推出了专门用于观赏的魔方，这种魔方<strong>不能拧动</strong>，为了能使魔方能展现不同的图案，</font>smallbox<font face="DejaVu Sans">魔方配有</font>6<font face="DejaVu Sans">种不同颜色的贴纸，用户可以根据自己的喜好在每个小色块上贴上不同的颜色，纸一旦贴上就不能更改了，当然你仍然可以把整个魔方拿起来再换一个角度来摆放。</font></p>
<p style="text-indent: 0.29in; margin-bottom: 0in;"><br>
</p>
<p style="text-indent: 0.29in; margin-bottom: 0in;"><font face="DejaVu Sans">一个</font>smallbox<font face="DejaVu Sans">魔方配有六种不同颜色的贴纸，共</font>6&#215;<em>n</em>&#215;<em>n</em><font face="DejaVu Sans">张。每种颜色的贴纸数量已知。现在由你来把这些贴纸贴到这个魔方上，使魔方表面的每个小色块都恰好被贴上一张贴纸，那么你有多少种不同的贴纸方案呢？</font></p>
<p style="text-indent: 0.29in; margin-bottom: 0in;"><br>
</p>
<p style="text-indent: 0.29in; margin-bottom: 0in;"><font face="DejaVu Sans">如果一种贴纸方案能通过变换摆放方式得到另一种方案，那么这两种方案算同一种。</font></p>
<h2 class="western">Input</h2>
<p style="text-indent: 0.29in; margin-bottom: 0in;"><font face="DejaVu Sans">第一行一个正整数</font>T<font face="DejaVu Sans">，表示测试数据的组数。每组数据有两行，第一行一个数</font><em>n</em><font face="DejaVu Sans">，</font>1
&#8804; <em>n</em> &#8804;
50<font face="DejaVu Sans">，表示这个</font>smallbox<font face="DejaVu Sans">魔方是</font><em>n</em><font face="DejaVu Sans">阶的。第二行</font>6<font face="DejaVu Sans">个数</font><em>a</em><sub>1</sub>,<em>a</em><sub>2</sub>.<em>a</em><sub>3</sub>,<em>a</em><sub>4</sub>,<em>a</em><sub>5</sub>,<em>a</em><sub>6</sub><font face="DejaVu Sans">，表示每种颜色的贴纸数量，</font>0
&#8804; <em>a</em><sub>i</sub> &#8804; 6&#215;n&#215;n<font face="DejaVu Sans">，这六个数的总和等于</font>6&#215;<em>n</em>&#215;<em>n</em><font face="DejaVu Sans">。</font></p>
<h2 class="western">Output</h2>
<p style="text-indent: 0.29in; margin-bottom: 0in;"><font face="DejaVu Sans">对应每组输入数据，输出一行，包含一个数，即贴纸方案总数，这个数很大，你只需要输出它除以</font>1000,000,007<font face="DejaVu Sans">的余数。</font></p>
<h2 class="western">Sample Input</h2>
<p style="margin-bottom: 0in;">5</p>
<p style="margin-bottom: 0in;">1</p>
<p style="margin-bottom: 0in;">5 1 0 0 0 0</p>
<p style="margin-bottom: 0in;">1</p>
<p style="margin-bottom: 0in;">1 1 1 1 1 1</p>
<p style="margin-bottom: 0in;">2</p>
<p style="margin-bottom: 0in;">1 23 0 0 0 0</p>
<p style="margin-bottom: 0in;">2</p>
<p style="margin-bottom: 0in;">1 1 22 0 0 0</p>
<p style="margin-bottom: 0in;">3</p>
<p style="margin-bottom: 0in;">1 53 0 0 0 0</p>
<h2 class="western">Sample output</h2>
<p style="margin-bottom: 0in;">1</p>
<p style="margin-bottom: 0in;">30</p>
<p style="margin-bottom: 0in;">1</p>
<p style="margin-bottom: 0in;">23</p>
<p style="margin-bottom: 0in;">3</p>
<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;">正方体的空间24个置换如下：<br>1</span><span style="color: #000000;">.&nbsp;绕中心轴转动(共3*2个) （n分偶,奇讨论）<br>转动270度，90度两种情况<br><br>若为偶数&nbsp;有&nbsp;长度为4的循环节。<br>若为奇数&nbsp;有&nbsp;长度为4的循环节和两个长度为1的循环节。<br><br>转动180度<br><br>若&nbsp;n为偶数&nbsp;&nbsp;&nbsp;&nbsp;每个循环节长度为2<br>若&nbsp;n为奇数&nbsp;&nbsp;&nbsp;&nbsp;两个长度为1的循环节&nbsp;，&nbsp;其他长度为2<br><br></span><span style="color: #000000;">2</span><span style="color: #000000;">.&nbsp;绕某个中心轴转360度（虽然有3个轴但是是同一个置换，公1个）<br>每个循环节长度为1<br><br></span><span style="color: #000000;">3</span><span style="color: #000000;">.&nbsp;绕连接对边的中心的轴转动180度（共6个）<br>循环节长度为&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;(通过在魔方上标号，转动揣摩出来的)<br><br></span><span style="color: #000000;">4</span><span style="color: #000000;">.绕体对角线轴转动120度,240度 （共4*2个）<br>循环节长度为&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;"><br><br>所以&nbsp;总共有&nbsp;</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;">3</span><span style="color: #000000;">+</span><span style="color: #000000;">6</span><span style="color: #000000;">*</span><span style="color: #000000;">1</span><span style="color: #000000;">+</span><span style="color: #000000;">4</span><span style="color: #000000;">*</span><span style="color: #000000;">2</span><span style="color: #000000;">=</span><span style="color: #000000;">24</span><span style="color: #000000;">&nbsp;个置换。<br><br>奇偶共有：<br></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;">循环节长度为3&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #000000;">6</span><span style="color: #000000;">个置换</span><span style="color: #000000;">*</span><span style="color: #000000;">循环节长度为2&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;1个置换</span><span style="color: #000000;">*</span><span style="color: #000000;">循环节长度为1<br><br>奇数还有:<br>(</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的循环节其他长度为4）</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;3个置换</span><span style="color: #000000;">*</span><span style="color: #000000;">（两个长度为1的循环节其他长度为4）<br>偶数还有:<br>(</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;">(循环节长度为4)</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;3个置换</span><span style="color: #000000;">*</span><span style="color: #000000;">（循环节长度为2）<br></span></div>
<br><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: #008080;">&nbsp;&nbsp;<span style="font-family: courier new;">1</span></span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">#include&nbsp;&lt;iostream&gt;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;2</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">#include&nbsp;&lt;cstdio&gt;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;3</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">#include&nbsp;&lt;cstring&gt;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;4</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;5</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">using</span><span style="color: #000000; font-family: courier new;">&nbsp;</span><span style="color: #0000ff; font-family: courier new;">namespace</span><span style="color: #000000; font-family: courier new;">&nbsp;std;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;6</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;7</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">typedef&nbsp;</span><span style="color: #0000ff; font-family: courier new;">long</span><span style="color: #000000; font-family: courier new;">&nbsp;</span><span style="color: #0000ff; font-family: courier new;">long</span><span style="color: #000000; font-family: courier new;">&nbsp;LL;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;8</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;9</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">const</span><span style="color: #000000; font-family: courier new;">&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;max_n=15000+5;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;10</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">const</span><span style="color: #000000; font-family: courier new;">&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;MOD=1000000007;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;11</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;12</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">LL&nbsp;fac[max_n],inv[max_n],facv[max_n];&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; font-family: courier new;">//fac[n]=n!%MOD&nbsp;(facv[n]*fac[n])=1;&nbsp;&nbsp;&nbsp;&nbsp;(inv[n]*n)%MOD=1<br></span><span style="color: #008080; font-family: courier new;">&nbsp;13</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #008000; font-family: courier new;"></span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;14</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">LL&nbsp;mypow(LL&nbsp;a,</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;b){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;15</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;LL&nbsp;res=1;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;16</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(;b;b&gt;&gt;=1){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;17</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(b&amp;1)&nbsp;&nbsp;&nbsp;&nbsp;res=(res*a)%MOD;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;18</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a*=a;&nbsp;&nbsp;&nbsp;&nbsp;a%=MOD;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;19</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;20</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;res;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;21</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;22</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">LL&nbsp;cal_inv(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;t){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;23</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;mypow((LL)t,MOD-2);<br></span><span style="color: #008080; font-family: courier new;">&nbsp;24</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;25</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;26</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">void</span><span style="color: #000000; font-family: courier new;">&nbsp;ini(){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;27</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;fac[0]=1;&nbsp;&nbsp;&nbsp;&nbsp;facv[0]=1;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;28</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i=1;i&lt;max_n;i++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;29</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inv[i]=cal_inv(i);<br></span><span style="color: #008080; font-family: courier new;">&nbsp;30</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;facv[i]=(facv[i-1]*inv[i])%MOD;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;31</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fac[i]=(fac[i-1]*i)%MOD;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;32</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;33</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;34</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;35</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;col[6],N;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;36</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;37</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;gcd(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;a,</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;b){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;38</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(b==0)&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;a;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;39</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;gcd(b,a%b);<br></span><span style="color: #008080; font-family: courier new;">&nbsp;40</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;41</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;42</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">LL&nbsp;solve(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;t){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;43</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;b[6],tot=0;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;44</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i=0;i&lt;6;i++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;45</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b[i]=col[i]/t;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;46</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tot+=b[i];<br></span><span style="color: #008080; font-family: courier new;">&nbsp;47</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;48</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;LL&nbsp;res=1;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;49</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;res=(res*fac[tot])%MOD;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;50</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i=0;i&lt;6;i++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;51</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res=(res*facv[b[i]])%MOD;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;52</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;53</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;res;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;54</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;55</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;main()<br></span><span style="color: #008080; font-family: courier new;">&nbsp;56</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">{<br></span><span style="color: #008080; font-family: courier new;">&nbsp;57</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;T;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;58</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;ini();<br></span><span style="color: #008080; font-family: courier new;">&nbsp;59</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;scanf("%d",&amp;T);<br></span><span style="color: #008080; font-family: courier new;">&nbsp;60</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;61</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;ncas=1;ncas&lt;=T;ncas++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;62</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;63</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf("%d",&amp;N);<br></span><span style="color: #008080; font-family: courier new;">&nbsp;64</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;e=0;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;65</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i=0;i&lt;6;i++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;66</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf("%d",&amp;col[i]);<br></span><span style="color: #008080; font-family: courier new;">&nbsp;67</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e=gcd(e,col[i]);<br></span><span style="color: #008080; font-family: courier new;">&nbsp;68</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;69</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;70</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LL&nbsp;ans=0;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;71</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;=&nbsp;(ans+solve(1))%MOD;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;72</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(e%2==0){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;73</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;=&nbsp;(ans+6*solve(2)&nbsp;)%MOD;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;74</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;75</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(e%3==0){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;76</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;=&nbsp;(ans+8*solve(3)&nbsp;)%MOD;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;77</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;78</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;79</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(N&amp;1){&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; font-family: courier new;">//N为奇数<br></span><span style="color: #008080; font-family: courier new;">&nbsp;80</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #008000; font-family: courier new;"></span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i=0;i&lt;6;i++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;81</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;j=0;j&lt;6;j++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;82</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&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; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">((i==j&amp;&amp;col[i]&gt;=2)||(i!=j&amp;&amp;col[i]&amp;&amp;col[j])){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;83</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col[i]--;&nbsp;&nbsp;&nbsp;&nbsp;col[j]--;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;84</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;t=0;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;85</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;k=0;k&lt;6;k++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;86</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t=gcd(t,col[k]);<br></span><span style="color: #008080; font-family: courier new;">&nbsp;87</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;88</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(t%2==0){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;89</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans=(ans+3*solve(2))%MOD;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;90</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;91</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(t%4==0){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;92</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;=&nbsp;(ans+6*solve(4))%MOD;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;93</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;94</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col[i]++;&nbsp;&nbsp;&nbsp;&nbsp;col[j]++;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;95</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;96</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;97</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;98</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff; font-family: courier new;">else</span><span style="color: #000000; font-family: courier new;">{<br></span><span style="color: #008080; font-family: courier new;">&nbsp;99</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(e%2==0){<br></span><span style="color: #008080; font-family: courier new;">100</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;=&nbsp;(ans+3*solve(2))%MOD;<br></span><span style="color: #008080; font-family: courier new;">101</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">102</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(e%4==0){<br></span><span style="color: #008080; font-family: courier new;">103</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;=&nbsp;(&nbsp;ans+6*solve(4)&nbsp;)%MOD;<br></span><span style="color: #008080; font-family: courier new;">104</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">105</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">106</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans=(ans*inv[24])%MOD;<br></span><span style="color: #008080; font-family: courier new;">107</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%lld\n",ans,N);<br></span><span style="color: #008080; font-family: courier new;">108</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">109</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;0;<br></span><span style="color: #008080; font-family: courier new;">110</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">111</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000;"></span></div>
<br><br> <img src ="http://www.cppblog.com/ArefaElvis/aggbug/129378.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArefaElvis/" target="_blank">ArefaElvis</a> 2010-10-10 23:17 <a href="http://www.cppblog.com/ArefaElvis/archive/2010/10/10/129378.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UVA 11255 Necklace (Burnside)</title><link>http://www.cppblog.com/ArefaElvis/archive/2010/10/10/129359.html</link><dc:creator>ArefaElvis</dc:creator><author>ArefaElvis</author><pubDate>Sun, 10 Oct 2010 11:52:00 GMT</pubDate><guid>http://www.cppblog.com/ArefaElvis/archive/2010/10/10/129359.html</guid><wfw:comment>http://www.cppblog.com/ArefaElvis/comments/129359.html</wfw:comment><comments>http://www.cppblog.com/ArefaElvis/archive/2010/10/10/129359.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArefaElvis/comments/commentRss/129359.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArefaElvis/services/trackbacks/129359.html</trackback:ping><description><![CDATA[题意：有三种不同颜色的珍珠(pearls)白（W颗），灰（G颗），黑（B颗）， 其中3&lt;=W+G+B&lt;=40，问用这些珍珠可以串成多少种(W+G+B)长的不同的项链（项链可在平面内转动，也可翻转）。<br>令W+G+B=N;<br><br>先考虑转动，项链可转动(2PI)*K/N (1&lt;=K&lt;=N)共N个不同角度，而K置换(转动 (2PI)*K/N 度)可表示为 gcd(K,N)个长度为 N/gcd(K,N)的循环节，很容易发现如果gcd(W,G,B)%gcd(K,N)!=0,那么K置换的固定构型为0个，如果 gcd(W,G,B)%gcd(K,N)==0 那么 K置换的固定构型为 W/gcd(K,N), G/gcd(K,N),B/gcd(K,N)三类型的序列排列个数，即K置换的固定构型数为：C[F[W+G+B],F[W]] * C[F[G+B],B]（另F[X]=X/gcd(K,N),X={W,G,B,X+X} , C[X,Y]为组合数）。<br><br>现在考虑翻转。<br><br>如果N为奇数，那么翻转的 N个置换都是{一个长度为1的循环节+(N-1)/2个长度为2的循环节}，这样如果 W,G,B三个都为奇数，那么固定构型数为0，如果只有一个为奇数（假设W为奇数）那么固定构型数为 (W-1)/2, G/2,B/2的三类型序列排列个数。<br><br>如果N为偶数，那么有 N/2个置换为{N/2个长度为2的循环节}，这种情况必须W,G,B都为偶数，而且很好处理。<br>还有N/2个置换为{（N-2）/2个长度为2的循环节，2个长度为1的循环节}，如果W,G,B都是偶数，那么固定构型数为 {(W&gt;=2)*{(W-2)/2,G/2,B/2 的三类型排列数} + （B&gt;=2)*{W/2,G/2,(B-2)/2的三类型排列数} + (G&gt;=2)*{W/2,(G-2)/2,G/2的三类型排列数}}，如果W,G,B有两个是奇数（假设为W,G),那么固定构型数为2*{(W-1)/2,(G-1)/2,B的三类型排列数}。 <br><br>由于其中涉及到的三类型排列数最大为 40!/14!/13!/13! = 2.4～* 10^17,&nbsp;&nbsp;&nbsp; 而max(unsigned long long )=2^64-1=1.8～*10^19 ,所以用unsigned long long 即可解决。<br><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: #008080;">&nbsp;&nbsp;<span style="font-family: courier new;">1</span></span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">#include&nbsp;&lt;iostream&gt;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;2</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">#include&nbsp;&lt;cstdio&gt;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;3</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">#include&nbsp;&lt;cstring&gt;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;4</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;5</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">using</span><span style="color: #000000; font-family: courier new;">&nbsp;</span><span style="color: #0000ff; font-family: courier new;">namespace</span><span style="color: #000000; font-family: courier new;">&nbsp;std;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;6</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;7</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">const</span><span style="color: #000000; font-family: courier new;">&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;max_n=41;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;8</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">typedef&nbsp;unsigned&nbsp;</span><span style="color: #0000ff; font-family: courier new;">long</span><span style="color: #000000; font-family: courier new;">&nbsp;</span><span style="color: #0000ff; font-family: courier new;">long</span><span style="color: #000000; font-family: courier new;">&nbsp;ULL;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;9</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;10</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">ULL&nbsp;c[max_n][max_n];<br></span><span style="color: #008080; font-family: courier new;">&nbsp;11</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;12</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">void</span><span style="color: #000000; font-family: courier new;">&nbsp;ini(){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;13</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;c[0][0]=1;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;14</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i=1;i&lt;max_n;i++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;15</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;j=0;j&lt;=i;j++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;16</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(j==0||j==i)&nbsp;&nbsp;&nbsp;&nbsp;c[i][j]=1;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;17</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">else</span><span style="color: #000000; font-family: courier new;">{<br></span><span style="color: #008080; font-family: courier new;">&nbsp;18</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c[i][j]=c[i-1][j-1]+c[i-1][j];<br></span><span style="color: #008080; font-family: courier new;">&nbsp;19</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;20</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;21</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;22</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;23</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;24</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;W,B,G,N;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;25</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;phi[max_n];<br></span><span style="color: #008080; font-family: courier new;">&nbsp;26</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;27</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">void</span><span style="color: #000000; font-family: courier new;">&nbsp;gen_phi(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;N){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;28</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i,j;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;29</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;phi[1]=1;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;30</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(i=2;i&lt;=N;i++)&nbsp;&nbsp;&nbsp;&nbsp;phi[i]=i;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;31</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(i=2;i&lt;=N;i+=2)&nbsp;&nbsp;&nbsp;&nbsp;phi[i]/=2;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;32</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(i=3;i&lt;=N;i+=2){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;33</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(phi[i]==i){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;34</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(j=i;j&lt;=N;j+=i){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;35</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;phi[j]=phi[j]/i*(i-1);<br></span><span style="color: #008080; font-family: courier new;">&nbsp;36</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;37</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;38</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;39</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;40</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;gcd(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;a,</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;b){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;41</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(b==0)&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;a;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;42</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;gcd(b,a%b);<br></span><span style="color: #008080; font-family: courier new;">&nbsp;43</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;44</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;45</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;main()<br></span><span style="color: #008080; font-family: courier new;">&nbsp;46</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">{<br></span><span style="color: #008080; font-family: courier new;">&nbsp;47</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;T;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;48</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;ini();<br></span><span style="color: #008080; font-family: courier new;">&nbsp;49</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;gen_phi(max_n-1);<br></span><span style="color: #008080; font-family: courier new;">&nbsp;50</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;51</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;scanf("%d",&amp;T);<br></span><span style="color: #008080; font-family: courier new;">&nbsp;52</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;ncas=1;ncas&lt;=T;ncas++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;53</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf("%d%d%d",&amp;W,&amp;B,&amp;G);<br></span><span style="color: #008080; font-family: courier new;">&nbsp;54</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N=W+B+G;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;55</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;56</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ULL&nbsp;ans=0;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;57</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;58</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;e=gcd(W,B);&nbsp;&nbsp;&nbsp;&nbsp;e=gcd(e,G);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; font-family: courier new;">//e为最小单元<br></span><span style="color: #008080; font-family: courier new;">&nbsp;59</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #008000; font-family: courier new;"></span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;60</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i=1;i*i&lt;=N;i++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;61</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(N%i==0){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;62</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(i*i==N&nbsp;&amp;&amp;&nbsp;(e%i==0)&nbsp;){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;63</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;+=&nbsp;phi[i]*c[N/i][W/i]*c[(B+G)/i][B/i];<br></span><span style="color: #008080; font-family: courier new;">&nbsp;64</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff; font-family: courier new;">else</span><span style="color: #000000; font-family: courier new;">{<br></span><span style="color: #008080; font-family: courier new;">&nbsp;65</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&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; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(e%(i)==0){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;66</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;+=&nbsp;phi[i]*c[N/i][W/i]*c[(B+G)/i][B/i];<br></span><span style="color: #008080; font-family: courier new;">&nbsp;67</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;68</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&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; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(e%(N/i)==0){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;69</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;t=N/i;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;70</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;+=&nbsp;phi[t]*c[N/t][W/t]*c[(B+G)/t][B/t];<br></span><span style="color: #008080; font-family: courier new;">&nbsp;71</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;72</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;73</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;74</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;75</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;76</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ULL&nbsp;part1=ans/N;&nbsp;&nbsp;&nbsp;&nbsp;ans=0;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;77</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;78</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;odd_cnt=(W&amp;1)+(B&amp;1)+(G&amp;1);<br></span><span style="color: #008080; font-family: courier new;">&nbsp;79</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(N&amp;1){&nbsp;&nbsp;</span><span style="color: #008000; font-family: courier new;">//&nbsp;奇数个可分成一个长度为1的循环节和(N-1)/2个长度为2的循环节。<br></span><span style="color: #008080; font-family: courier new;">&nbsp;80</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #008000; font-family: courier new;"></span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(odd_cnt==1){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;81</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;T=N-1;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;82</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(W&amp;1){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;83</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;+=&nbsp;c[T/2][(W-1)/2]*c[(B+G)/2][B/2]*N;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;84</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff; font-family: courier new;">else</span><span style="color: #000000; font-family: courier new;">&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(B&amp;1){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;85</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;+=&nbsp;c[T/2][(B-1)/2]*c[(W+G)/2][W/2]*N;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;86</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff; font-family: courier new;">else</span><span style="color: #000000; font-family: courier new;">&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(G&amp;1){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;87</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;+=&nbsp;c[T/2][(G-1)/2]*c[(W+B)/2][W/2]*N;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;88</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;89</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;90</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff; font-family: courier new;">else</span><span style="color: #000000; font-family: courier new;">{<br></span><span style="color: #008080; font-family: courier new;">&nbsp;91</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;92</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(odd_cnt==0){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;93</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;+=&nbsp;N/2*c[N/2][W/2]*c[(B+G)/2][B/2];<br></span><span style="color: #008080; font-family: courier new;">&nbsp;94</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;T=N-2;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;95</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(W&gt;=2){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;96</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;+=&nbsp;N/2*c[T/2][(W-2)/2]*c[(B+G)/2][B/2];<br></span><span style="color: #008080; font-family: courier new;">&nbsp;97</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;98</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(B&gt;=2){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;99</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;+=&nbsp;N/2*c[T/2][(B-2)/2]*c[(W+G)/2][W/2];<br></span><span style="color: #008080; font-family: courier new;">100</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">101</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(G&gt;=2){<br></span><span style="color: #008080; font-family: courier new;">102</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;+=&nbsp;N/2*c[T/2][(G-2)/2]*c[(W+B)/2][W/2];&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080; font-family: courier new;">103</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; font-family: courier new;">//因为这个地方笔误，又再找各种莫须有的错误，让无聊的WA很嚣张的绽放了3次<br></span><span style="color: #008080; font-family: courier new;">104</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #008000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//另又改成JAVA，提交Runtime&nbsp;Error&nbsp;才发现。<br></span><span style="color: #008080; font-family: courier new;">105</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #008000; font-family: courier new;"></span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">106</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">107</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(odd_cnt==2){<br></span><span style="color: #008080; font-family: courier new;">108</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;T=N-2;<br></span><span style="color: #008080; font-family: courier new;">109</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(!(W&amp;1)){<br></span><span style="color: #008080; font-family: courier new;">110</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;+=&nbsp;N*c[T/2][W/2]*c[(B+G-2)/2][(B-1)/2];<br></span><span style="color: #008080; font-family: courier new;">111</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff; font-family: courier new;">else</span><span style="color: #000000; font-family: courier new;">&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(!(B&amp;1)){<br></span><span style="color: #008080; font-family: courier new;">112</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;+=&nbsp;N*c[T/2][B/2]*c[(W+G-2)/2][(G-1)/2];<br></span><span style="color: #008080; font-family: courier new;">113</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff; font-family: courier new;">else</span><span style="color: #000000; font-family: courier new;">&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(!(G&amp;1)){<br></span><span style="color: #008080; font-family: courier new;">114</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;+=&nbsp;N*c[T/2][G/2]*c[(W+B-2)/2][(W-1)/2];<br></span><span style="color: #008080; font-family: courier new;">115</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">116</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">117</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">118</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans/=N;<br></span><span style="color: #008080; font-family: courier new;">119</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans=(ans+part1)/2;<br></span><span style="color: #008080; font-family: courier new;">120</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%llu\n",ans);<br></span><span style="color: #008080; font-family: courier new;">121</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">122</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;0;<br></span><span style="color: #008080; font-family: courier new;">123</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">124</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000;"></span></div>
<br>  <img src ="http://www.cppblog.com/ArefaElvis/aggbug/129359.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArefaElvis/" target="_blank">ArefaElvis</a> 2010-10-10 19:52 <a href="http://www.cppblog.com/ArefaElvis/archive/2010/10/10/129359.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ_2888 Magic Bracelet (有限制的Burnside , 矩阵幂 )</title><link>http://www.cppblog.com/ArefaElvis/archive/2010/10/10/129269.html</link><dc:creator>ArefaElvis</dc:creator><author>ArefaElvis</author><pubDate>Sat, 09 Oct 2010 16:33:00 GMT</pubDate><guid>http://www.cppblog.com/ArefaElvis/archive/2010/10/10/129269.html</guid><wfw:comment>http://www.cppblog.com/ArefaElvis/comments/129269.html</wfw:comment><comments>http://www.cppblog.com/ArefaElvis/archive/2010/10/10/129269.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/ArefaElvis/comments/commentRss/129269.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArefaElvis/services/trackbacks/129269.html</trackback:ping><description><![CDATA[给一串有n(1&lt;=10^9 &amp;&amp; gcd(n,9973))颗珠子的项链染色，已知某些{ci,cj}（i可能等于j）颜色不能出现在相连的珠子中。项链在平面内转动（不能翻转）得到的为等价方案，求不同的染色方案数mod 9973。<br><br>由于项链只能绕中心转动，而不能翻转，所以有一个很好的性质：项链转 2*PI*k/n个角度的置换共有 gcd(k,n)个长度均为len=n/gcd(k,n)的循环节，而且可以发现，若gcd(k,n)&gt;1,则从某一个编号的项链开始顺时针（或逆时针）相邻的len个珠子两两处于不同的循环节中。这样k置换（1&lt;=k&lt;=n）的固定构型数等价于：<br>给长度为gcd(k,n)的序列染色（没写错，确实是序列），其中所有相邻编号（beg和end为相邻的）为合法对（若color i 和 color j 能够分别出现在相邻的两珠子上，那么说(i,j)是合法对）的染色方案。<br><br>假设一个长度为 L 的序列的合法表示为 a1,a2,&#8230;&#8230;,aL 那么(a1,a2)(a2,a3),&#8230;&#8230;，(a(L-1),aL),(aL,a1)必定都为1 ，所以令 g[ai,aj]=1表示（ai,aj）为合法对，g[ai,aj]=0表示(ai,aj)为非法对。那么以a1开头的合法序列为k个那么必定存在且仅存在k个不同的序列{b1,b2,b3,b4,&#8230;&#8230;，b(L-1)}满足 g[a1,b1]*g[b1,b2]*&#8230;&#8230;g[b(L-2),b(L-1)]*g[b(L-1),a1]=1; 这样很显然就是矩阵g[ai,aj]的L次幂中g[a1,a1]的的值。<br><br>很显然，这题可以用矩阵快速幂取模。<br><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: #008080; font-family: courier new;">&nbsp;&nbsp;1</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">#include&nbsp;&lt;iostream&gt;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;2</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">#include&nbsp;&lt;cstring&gt;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;3</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">#include&nbsp;&lt;cstdio&gt;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;4</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">using</span><span style="color: #000000; font-family: courier new;">&nbsp;</span><span style="color: #0000ff; font-family: courier new;">namespace</span><span style="color: #000000; font-family: courier new;">&nbsp;std;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;5</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;6</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">const</span><span style="color: #000000; font-family: courier new;">&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;max_n=15;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;7</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">const</span><span style="color: #000000; font-family: courier new;">&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;MOD=9973;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;8</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;N;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;&nbsp;9</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;10</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">struct</span><span style="color: #000000; font-family: courier new;">&nbsp;Mat{<br></span><span style="color: #008080; font-family: courier new;">&nbsp;11</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;mat[max_n][max_n];<br></span><span style="color: #008080; font-family: courier new;">&nbsp;12</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">};<br></span><span style="color: #008080; font-family: courier new;">&nbsp;13</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;14</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">Mat&nbsp;</span><span style="color: #0000ff; font-family: courier new;">operator</span><span style="color: #000000; font-family: courier new;">*(Mat&nbsp;a,Mat&nbsp;b){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;15</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;Mat&nbsp;c;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;16</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;memset(c.mat,0,</span><span style="color: #0000ff; font-family: courier new;">sizeof</span><span style="color: #000000; font-family: courier new;">(c.mat));<br></span><span style="color: #008080; font-family: courier new;">&nbsp;17</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i=0;i&lt;N;i++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;18</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;j=0;j&lt;N;j++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;19</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;k=0;k&lt;N;k++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;20</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(a.mat[i][k]&nbsp;&amp;&amp;&nbsp;b.mat[k][j]){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;21</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.mat[i][j]=(c.mat[i][j]+a.mat[i][k]*b.mat[k][j])%MOD;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;22</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;23</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;24</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;25</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;26</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;c;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;27</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;28</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;29</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">Mat&nbsp;</span><span style="color: #0000ff; font-family: courier new;">operator</span><span style="color: #000000; font-family: courier new;">^(Mat&nbsp;A,</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;x){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;30</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;Mat&nbsp;c;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;31</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;memset(c.mat,0,</span><span style="color: #0000ff; font-family: courier new;">sizeof</span><span style="color: #000000; font-family: courier new;">(c.mat));<br></span><span style="color: #008080; font-family: courier new;">&nbsp;32</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i=0;i&lt;N;i++)&nbsp;&nbsp;&nbsp;&nbsp;c.mat[i][i]=1;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;33</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(;x;x&gt;&gt;=1){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;34</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(x&amp;1){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;35</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c=c*A;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;36</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;37</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A=A*A;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;38</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;39</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;c;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;40</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;41</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;42</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;mypow(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;a,</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;b){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;43</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;res=1;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;44</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(;b;b&gt;&gt;=1){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;45</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(b&amp;1){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;46</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res*=a;&nbsp;&nbsp;&nbsp;&nbsp;res%=MOD;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;47</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;48</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a*=a;&nbsp;&nbsp;&nbsp;&nbsp;a%=MOD;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;49</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;50</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;res;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;51</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;52</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;53</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;M,K;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;54</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;55</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;PHI(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;n){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;56</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i,res=n;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">long</span><span style="color: #000000; font-family: courier new;">&nbsp;</span><span style="color: #0000ff; font-family: courier new;">long</span><span style="color: #000000; font-family: courier new;">&nbsp;j;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;57</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(i=2,j=4LL;j&lt;=(</span><span style="color: #0000ff; font-family: courier new;">long</span><span style="color: #000000; font-family: courier new;">&nbsp;</span><span style="color: #0000ff; font-family: courier new;">long</span><span style="color: #000000; font-family: courier new;">)n;i++,j+=i+i-1){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;58</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(!(n%i)){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;59</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res=res/i*(i-1);<br></span><span style="color: #008080; font-family: courier new;">&nbsp;60</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">while</span><span style="color: #000000; font-family: courier new;">(!(n%i))&nbsp;&nbsp;&nbsp;&nbsp;n/=i;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;61</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;62</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;63</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(n&gt;1)&nbsp;&nbsp;&nbsp;&nbsp;res=res/n*(n-1);<br></span><span style="color: #008080; font-family: courier new;">&nbsp;64</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;res%MOD;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;65</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;66</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;67</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">Mat&nbsp;A;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;68</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;solve(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;p){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;69</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;res=0;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;70</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;Mat&nbsp;C=A^p;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;71</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i=0;i&lt;N;i++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;72</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res+=C.mat[i][i];&nbsp;&nbsp;&nbsp;&nbsp;res%=MOD;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;73</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;74</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;res;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;75</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;76</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;main()<br></span><span style="color: #008080; font-family: courier new;">&nbsp;77</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">{<br></span><span style="color: #008080; font-family: courier new;">&nbsp;78</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;T;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;79</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;80</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;scanf("%d",&amp;T);<br></span><span style="color: #008080; font-family: courier new;">&nbsp;81</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;82</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;ncas=1;ncas&lt;=T;ncas++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;83</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf("%d%d%d",&amp;M,&amp;N,&amp;K);<br></span><span style="color: #008080; font-family: courier new;">&nbsp;84</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;u,v;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;85</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i=0;i&lt;N;i++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;86</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;j=0;j&lt;N;j++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;87</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A.mat[i][j]=1;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;88</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;89</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">&nbsp;90</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i=0;i&lt;K;i++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;91</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf("%d%d",&amp;u,&amp;v);<br></span><span style="color: #008080; font-family: courier new;">&nbsp;92</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A.mat[u-1][v-1]=A.mat[v-1][u-1]=0;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;93</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;94</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;95</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;ans=0;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;96</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;97</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;p=1;p*p&lt;=M;p++){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;98</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(M%p==0){<br></span><span style="color: #008080; font-family: courier new;">&nbsp;99</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(p*p==M){<br></span><span style="color: #008080; font-family: courier new;">100</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;=&nbsp;(ans+&nbsp;PHI(p)*solve(p)&nbsp;)%MOD;<br></span><span style="color: #008080; font-family: courier new;">101</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff; font-family: courier new;">else</span><span style="color: #000000; font-family: courier new;">{<br></span><span style="color: #008080; font-family: courier new;">102</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;=&nbsp;(ans+&nbsp;PHI(p)*solve(M/p)+&nbsp;PHI(M/p)*solve(p)&nbsp;)%MOD;<br></span><span style="color: #008080; font-family: courier new;">103</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080; font-family: courier new;">104</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">105</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">106</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080; font-family: courier new;">107</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;inv=mypow((M%MOD),MOD-2);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; font-family: courier new;">//晕，这里没取模导致超出整形，WA了三次&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080; font-family: courier new;">108</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #008000; font-family: courier new;"></span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans*=inv;&nbsp;ans%=MOD;&nbsp;</span><span style="color: #008000; font-family: courier new;">//逆元。&nbsp;<br></span><span style="color: #008080; font-family: courier new;">109</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #008000; font-family: courier new;"></span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d\n",ans);<br></span><span style="color: #008080; font-family: courier new;">110</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">111</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;0;<br></span><span style="color: #008080; font-family: courier new;">112</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">113</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000;"></span></div>
<br><br> <img src ="http://www.cppblog.com/ArefaElvis/aggbug/129269.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArefaElvis/" target="_blank">ArefaElvis</a> 2010-10-10 00:33 <a href="http://www.cppblog.com/ArefaElvis/archive/2010/10/10/129269.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SGU 282 Isomorphism (Burnside)</title><link>http://www.cppblog.com/ArefaElvis/archive/2010/10/09/129165.html</link><dc:creator>ArefaElvis</dc:creator><author>ArefaElvis</author><pubDate>Sat, 09 Oct 2010 11:07:00 GMT</pubDate><guid>http://www.cppblog.com/ArefaElvis/archive/2010/10/09/129165.html</guid><wfw:comment>http://www.cppblog.com/ArefaElvis/comments/129165.html</wfw:comment><comments>http://www.cppblog.com/ArefaElvis/archive/2010/10/09/129165.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArefaElvis/comments/commentRss/129165.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArefaElvis/services/trackbacks/129165.html</trackback:ping><description><![CDATA[<span style="font-family: courier new;">求：用C种颜色染N阶完全图的不同染色方案(mod P),P为素数（两个染色方案是相同的当且仅当顶点编号重排后各边的颜色相同），</span><br style="font-family: courier new;"><span style="font-family: courier new;">其中1&lt;=N&lt;=53,1&lt;=C&lt;=1000;</span><br style="font-family: courier new;"><br style="font-family: courier new;"><span style="font-family: courier new;">很明显这个群有N!个置换（顶点的排列）,一个置换可表示为 (a1,a2,&#8230;&#8230;,am)(b1,b2,&#8230;&#8230;,bn)(c1,c2,&#8230;&#8230;,ck) &#8230;&#8230;循环节的形式，其中m+n+k=N。以下证明：</span><br style="font-family: courier new;"><span style="font-family: courier new;">&nbsp;</span><br style="font-family: courier new;"><span style="font-family: courier new;">1： 在一个置换下，关联的顶点都在某个L长的循环节的边，可分成一共floor(L/2)个等价类。</span><br style="font-family: courier new;"><span style="font-family: courier new;">2：在一个置换下，关联的顶点分别在两个长度为L1,L2的循环节内的边，可分成一共gcd(L1,L2)个等价类。</span><br style="font-family: courier new;"><br style="font-family: courier new;"><span style="font-family: courier new;">证明1： 在下面的证明中[x] 表示 (x mod L)</span><br style="font-family: courier new;"><br style="font-family: courier new;"><span style="font-family: courier new;">由于边{a[i],a([i]+[k])},{a[j],a([j]+[k])} ([k]&gt;=1 &amp;&amp; k&lt;=L-1)在同一个等价类 ，而且 {a[i],a([i]+[k])} 与 {a[i],a([i]+[L-k])}在同一个等价类，所以</span><br style="font-family: courier new;"><span style="font-family: courier new;">[k]={1,2,3,&#8230;&#8230;,floor(L/2)} 和 [k]={L-1,L-2,&#8230;&#8230;,ceil(L/2)}分别对应同一个等价类。所以1得证。</span><br style="font-family: courier new;"><br style="font-family: courier new;"><span style="font-family: courier new;">证明2：</span><br style="font-family: courier new;"><br style="font-family: courier new;"><span style="font-family: courier new;">若v1属于{a1,a2,&#8230;&#8230;,am},v2属于{b1,b2,&#8230;&#8230;,bn},则{v1,v2}的等价边为 {v1+[t],v2+[t]},其中,在t从 1开始增加的过程中，首次出现v1==v1+[t] &amp;&amp; v2==v2+[t] 是在 t=lcm(m,n)的时候，所以每一条边共有lcm(m,n)条等价边，所以共有 m*n/lcm(m,n)个等价类 即为 gcd(m,n);</span><br style="font-family: courier new;"><br style="font-family: courier new;"><span style="font-family: courier new;">如果一个置换可以表示为 长度分别为 L1,L2,&#8230;&#8230;,Lk(非降序排列)的k个循环节，那么在这个置换下边共有 n=Sum(floor(Li/2) ) + Sum(gcd(Li,Lj))个置换群;</span><br style="font-family: courier new;"><span style="font-family: courier new;">而 k1*L1+k2*L2+k3*L3+&#8230;&#8230;km*Lm=N(其中 Li != Lj for i != j) 的置换共有</span><br style="font-family: courier new;"><span style="font-family: courier new;">&nbsp;(N! *( (L1-1)! )^k1 *( (L2-1)!)^k2 *&#8230;&#8230;* ((Lm-1)!)^km&nbsp; )&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp; (&nbsp; ( (L1!)^k1 * (L2!)^k2 * (L3!)^k3*&#8230;&#8230;(Lm!)^km )*&nbsp; (k1! * k2! * k3!*&#8230;&#8230;*km!)&nbsp; )</span><br style="font-family: courier new;"><span style="font-family: courier new;">即为 tot = N!/( (L1^k1)*(L2^k2)*(L3^k3)*&#8230;&#8230;(Lm^km) * (k1! * k2! * k3! * &#8230;&#8230; *km!));</span><br style="font-family: courier new;"><span style="font-family: courier new;">所以可以表示成这个形式(k1*L1+k2*L2+k3*L3+&#8230;&#8230;+km*Lm)的固定构型个数为 ans= n* pow (C,tot)&nbsp; 个。</span><br><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: #008080;">&nbsp; <span style="font-family: courier new;">1</span></span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><span style="font-family: courier new;">#include&nbsp;&lt;iostream&gt;</span><br></span><span style="color: #008080; font-family: courier new;">&nbsp;2</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">#include&nbsp;&lt;cstring&gt;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;3</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">#include&nbsp;&lt;cstdio&gt;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;4</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">using</span><span style="color: #000000; font-family: courier new;">&nbsp;</span><span style="color: #0000ff; font-family: courier new;">namespace</span><span style="color: #000000; font-family: courier new;">&nbsp;std;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;5</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;6</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">const</span><span style="color: #000000; font-family: courier new;">&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;max_n=60;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;7</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">typedef&nbsp;</span><span style="color: #0000ff; font-family: courier new;">long</span><span style="color: #000000; font-family: courier new;">&nbsp;</span><span style="color: #0000ff; font-family: courier new;">long</span><span style="color: #000000; font-family: courier new;">&nbsp;LL;<br></span><span style="color: #008080; font-family: courier new;">&nbsp;8</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">&nbsp;9</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;N,C,P;<br></span><span style="color: #008080; font-family: courier new;">10</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">11</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">LL&nbsp;facv[max_n],inv[max_n];<br></span><span style="color: #008080; font-family: courier new;">12</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">13</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">LL&nbsp;mypow(LL&nbsp;a,LL&nbsp;b){<br></span><span style="color: #008080; font-family: courier new;">14</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;LL&nbsp;res=1,radix=a%P;<br></span><span style="color: #008080; font-family: courier new;">15</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">while</span><span style="color: #000000; font-family: courier new;">(b){<br></span><span style="color: #008080; font-family: courier new;">16</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(b&amp;1){<br></span><span style="color: #008080; font-family: courier new;">17</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res*=radix;&nbsp;&nbsp;&nbsp;&nbsp;res%=P;<br></span><span style="color: #008080; font-family: courier new;">18</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080; font-family: courier new;">19</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radix*=radix;&nbsp;&nbsp;&nbsp;&nbsp;radix%=P;<br></span><span style="color: #008080; font-family: courier new;">20</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&gt;&gt;=1;<br></span><span style="color: #008080; font-family: courier new;">21</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">22</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;res;<br></span><span style="color: #008080; font-family: courier new;">23</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">24</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">25</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">LL&nbsp;cal_inv(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i){<br></span><span style="color: #008080; font-family: courier new;">26</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;mypow(i,P-2);<br></span><span style="color: #008080; font-family: courier new;">27</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">28</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">29</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;gcd(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i,</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;j){<br></span><span style="color: #008080; font-family: courier new;">30</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(j==0)&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;i;<br></span><span style="color: #008080; font-family: courier new;">31</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;gcd(j,i%j);<br></span><span style="color: #008080; font-family: courier new;">32</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">33</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">void</span><span style="color: #000000; font-family: courier new;">&nbsp;ini(){<br></span><span style="color: #008080; font-family: courier new;">34</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;facv[1]=1;<br></span><span style="color: #008080; font-family: courier new;">35</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;inv[1]=1;<br></span><span style="color: #008080; font-family: courier new;">36</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i=2;i&lt;=N;i++){<br></span><span style="color: #008080; font-family: courier new;">37</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inv[i]=cal_inv(i);<br></span><span style="color: #008080; font-family: courier new;">38</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;facv[i]=facv[i-1]*inv[i];&nbsp;&nbsp;&nbsp;&nbsp;facv[i]%=P;<br></span><span style="color: #008080; font-family: courier new;">39</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">40</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">41</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">42</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;factor[max_n][2];&nbsp;&nbsp;&nbsp;&nbsp;LL&nbsp;ans;<br></span><span style="color: #008080; font-family: courier new;">43</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">44</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">void</span><span style="color: #000000; font-family: courier new;">&nbsp;search(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;sum,</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;top){<br></span><span style="color: #008080; font-family: courier new;">45</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(sum==N){<br></span><span style="color: #008080; font-family: courier new;">46</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LL&nbsp;n=1;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080; font-family: courier new;">47</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i=1;i&lt;=top;i++){<br></span><span style="color: #008080; font-family: courier new;">48</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;len=factor[i][0],cnt=factor[i][1];<br></span><span style="color: #008080; font-family: courier new;">49</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n*=mypow(inv[len],cnt);&nbsp;n%=P;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080; font-family: courier new;">50</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n*=facv[cnt];&nbsp;&nbsp;&nbsp;&nbsp;n%=P;<br></span><span style="color: #008080; font-family: courier new;">51</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">52</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LL&nbsp;tot=0;<br></span><span style="color: #008080; font-family: courier new;">53</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i=1;i&lt;=top;i++){<br></span><span style="color: #008080; font-family: courier new;">54</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">55</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;len=factor[i][0],cnt=factor[i][1];<br></span><span style="color: #008080; font-family: courier new;">56</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tot+=cnt*(len/2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; font-family: courier new;">//the&nbsp;same&nbsp;circle<br></span><span style="color: #008080; font-family: courier new;">57</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #008000; font-family: courier new;"></span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tot+=cnt*(cnt-1)/2*len;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; font-family: courier new;">//two&nbsp;different&nbsp;circle<br></span><span style="color: #008080; font-family: courier new;">58</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #008000; font-family: courier new;"></span><span style="color: #000000; font-family: courier new;"><br></span><span style="color: #008080; font-family: courier new;">59</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;j=i+1;j&lt;=top;j++){<br></span><span style="color: #008080; font-family: courier new;">60</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;len_j=factor[j][0],&nbsp;&nbsp;&nbsp;&nbsp;cnt_j=factor[j][1];<br></span><span style="color: #008080; font-family: courier new;">61</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tot+=(cnt*cnt_j*gcd(len_j,len));<br></span><span style="color: #008080; font-family: courier new;">62</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">63</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">64</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans+=(n*mypow(C,tot))%P;&nbsp;&nbsp;&nbsp;&nbsp;ans%=P;<br></span><span style="color: #008080; font-family: courier new;">65</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">;<br></span><span style="color: #008080; font-family: courier new;">66</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">67</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">if</span><span style="color: #000000; font-family: courier new;">(sum+factor[top][0]&gt;=N){<br></span><span style="color: #008080; font-family: courier new;">68</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">;<br></span><span style="color: #008080; font-family: courier new;">69</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">70</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;i=factor[top][0]+1;i&lt;=N-sum;i++){<br></span><span style="color: #008080; font-family: courier new;">71</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">for</span><span style="color: #000000; font-family: courier new;">(</span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;j=1;sum+i*j&lt;=N;j++){<br></span><span style="color: #008080; font-family: courier new;">72</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factor[top+1][0]=i;&nbsp;&nbsp;&nbsp;&nbsp;factor[top+1][1]=j;<br></span><span style="color: #008080; font-family: courier new;">73</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;search(sum+i*j,top+1);<br></span><span style="color: #008080; font-family: courier new;">74</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">75</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">76</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">77</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;"></span><span style="color: #0000ff; font-family: courier new;">int</span><span style="color: #000000; font-family: courier new;">&nbsp;main()<br></span><span style="color: #008080; font-family: courier new;">78</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">{<br></span><span style="color: #008080; font-family: courier new;">79</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">while</span><span style="color: #000000; font-family: courier new;">(scanf("%d%d%d",&amp;N,&amp;C,&amp;P)!=EOF){<br></span><span style="color: #008080; font-family: courier new;">80</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ini();<br></span><span style="color: #008080; font-family: courier new;">81</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factor[0][0]=0;<br></span><span style="color: #008080; font-family: courier new;">82</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans=0;<br></span><span style="color: #008080; font-family: courier new;">83</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;search(0,0);<br></span><span style="color: #008080; font-family: courier new;">84</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%lld\n",ans);<br></span><span style="color: #008080; font-family: courier new;">85</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; font-family: courier new;">86</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-family: courier new;">return</span><span style="color: #000000; font-family: courier new;">&nbsp;0;<br></span><span style="color: #008080; font-family: courier new;">87</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000; font-family: courier new;">}<br></span><span style="color: #008080; font-family: courier new;">88</span><span style="font-family: courier new;">&nbsp;</span><span style="color: #000000;"></span></div>
<br>   <img src ="http://www.cppblog.com/ArefaElvis/aggbug/129165.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArefaElvis/" target="_blank">ArefaElvis</a> 2010-10-09 19:07 <a href="http://www.cppblog.com/ArefaElvis/archive/2010/10/09/129165.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDU_3577 (退化的线段树TLE到想呐喊了)</title><link>http://www.cppblog.com/ArefaElvis/archive/2010/09/24/127523.html</link><dc:creator>ArefaElvis</dc:creator><author>ArefaElvis</author><pubDate>Fri, 24 Sep 2010 09:46:00 GMT</pubDate><guid>http://www.cppblog.com/ArefaElvis/archive/2010/09/24/127523.html</guid><wfw:comment>http://www.cppblog.com/ArefaElvis/comments/127523.html</wfw:comment><comments>http://www.cppblog.com/ArefaElvis/archive/2010/09/24/127523.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArefaElvis/comments/commentRss/127523.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArefaElvis/services/trackbacks/127523.html</trackback:ping><description><![CDATA[<a href="http://acm.hdu.edu.cn/showproblem.php?pid=3577">http://acm.hdu.edu.cn/showproblem.php?pid=3577</a><br><br>题意：某路火车共有 N(N&lt;=1000000：这个数字对于站点来说着实惊人)个站点,有Q个人先后去买[bi,ei) {for 1&lt;=i&lt;=Q}的票，问在保证火车上总人数总不超过K的情况下哪些人可以买到票。<br><br>TLE的实现：用full[i]标记此段是否被覆盖，在插入的时候，如果目标线段覆盖了子线段并且子线段的full是false，还不能插入，只有当full[i]==true，并且目标线段覆盖了子线段才插入此子线段。细想一下，如果插入的线段都是比较短的时候，这个线段树可能退化成插入节点，而不再是插入线段了。<br><br><span style="color: red; font-weight: bold;">TLE的代码(免得忘了这个，下次再写一个)</span><br><br><span style="color: #000000;"></span>
<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: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">iostream</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<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></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">cstring</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"></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: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;max_n</span><span style="color: #000000;">=</span><span style="color: #000000;">1000005</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;tree[max_n</span><span style="color: #000000;">*</span><span style="color: #000000;">4</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">],full[max_n</span><span style="color: #000000;">*</span><span style="color: #000000;">4</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">];<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;k,Q;<br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;query(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;lt,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;rt,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;beg,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;end,</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">legal){<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(full[i]){<br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&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;">(tree[i]</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">k){<br></span><span style="color: #008080;">12</span>&nbsp;<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;legal</span><span style="color: #000000;">=</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;mid</span><span style="color: #000000;">=</span><span style="color: #000000;">(lt</span><span style="color: #000000;">+</span><span style="color: #000000;">rt)</span><span style="color: #000000;">/</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(beg</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">mid){<br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query(i</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">1</span><span style="color: #000000;">,lt,mid,beg,end,legal);<br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(end</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">mid</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query((i</span><span style="color: #000000;">&lt;&lt;</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;">,mid</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,rt,beg,end,legal);<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;insert(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;lt,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;rt,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;beg,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;end){<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(beg</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">lt</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">end</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">rt</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">full[i]){<br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tree[i]</span><span style="color: #000000;">++</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;full[i]</span><span style="color: #000000;">=</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(full[i]){<br></span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;full[i]</span><span style="color: #000000;">=</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;full[(i</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">1</span><span style="color: #000000;">)]</span><span style="color: #000000;">=</span><span style="color: #000000;">full[(i</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">1</span><span style="color: #000000;">)</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">=</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tree[i</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">=</span><span style="color: #000000;">tree[(i</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">1</span><span style="color: #000000;">)</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">=</span><span style="color: #000000;">tree[i];<br></span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;mid</span><span style="color: #000000;">=</span><span style="color: #000000;">(lt</span><span style="color: #000000;">+</span><span style="color: #000000;">rt)</span><span style="color: #000000;">/</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br></span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(beg</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">mid){<br></span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert(i</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">1</span><span style="color: #000000;">,lt,mid,beg,end);<br></span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(end</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">mid</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br></span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert((i</span><span style="color: #000000;">&lt;&lt;</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;">,mid</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,rt,beg,end);<br></span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main()<br></span><span style="color: #008080;">43</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;T;<br></span><span style="color: #008080;">46</span>&nbsp;<span style="color: #000000;">&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;">T);<br></span><span style="color: #008080;">47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;ncas</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">;ncas</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">T;ncas</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&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;">k,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">Q);<br></span><span style="color: #008080;">49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">50</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tree[</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;">,full[</span><span style="color: #000000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">=</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br></span><span style="color: #008080;">51</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">Case&nbsp;%d:\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,ncas);<br></span><span style="color: #008080;">52</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;beg,end;<br></span><span style="color: #008080;">53</span>&nbsp;<span style="color: #000000;">&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;">(</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;">Q;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">54</span>&nbsp;<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;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;">beg,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">end);<br></span><span style="color: #008080;">55</span>&nbsp;<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;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;legal</span><span style="color: #000000;">=</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br></span><span style="color: #008080;">56</span>&nbsp;<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;query(</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">1</span><span style="color: #000000;">,max_n</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">,beg,end</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">,legal);<br></span><span style="color: #008080;">57</span>&nbsp;<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;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(legal){<br></span><span style="color: #008080;">58</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert(</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">1</span><span style="color: #000000;">,max_n</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">,beg,end</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br></span><span style="color: #008080;">59</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d&nbsp;</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></span><span style="color: #008080;">60</span>&nbsp;<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;}<br></span><span style="color: #008080;">61</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">62</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">\n\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">63</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">64</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">65</span>&nbsp;<span style="color: #000000;"></span></div>
<br>改进：设两个属性： cover[i]记录完全覆盖次数， max_subcover[i] ：子段覆盖最大次数。<br> <img src ="http://www.cppblog.com/ArefaElvis/aggbug/127523.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArefaElvis/" target="_blank">ArefaElvis</a> 2010-09-24 17:46 <a href="http://www.cppblog.com/ArefaElvis/archive/2010/09/24/127523.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2-SAT问题总结</title><link>http://www.cppblog.com/ArefaElvis/archive/2010/09/22/127232.html</link><dc:creator>ArefaElvis</dc:creator><author>ArefaElvis</author><pubDate>Wed, 22 Sep 2010 09:44:00 GMT</pubDate><guid>http://www.cppblog.com/ArefaElvis/archive/2010/09/22/127232.html</guid><wfw:comment>http://www.cppblog.com/ArefaElvis/comments/127232.html</wfw:comment><comments>http://www.cppblog.com/ArefaElvis/archive/2010/09/22/127232.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArefaElvis/comments/commentRss/127232.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArefaElvis/services/trackbacks/127232.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.&nbsp; http://acm.pku.edu.cn/JudgeOnline/problem?id=3207题意：在一个圆圈上顺时针或逆时针排好N个点(0--&gt;N-1)，现在要以给定的M组端点画M条曲线段，曲线段可在圆内或圆外，判断是否存在一种画法使得这M条曲线段不相交。分析：每一条曲线段可置于圆内或圆外。这样可用两个顶点分别表示曲线段的摆放情况，例如（顶点2*i表示第i条曲线段置于...&nbsp;&nbsp;<a href='http://www.cppblog.com/ArefaElvis/archive/2010/09/22/127232.html'>阅读全文</a><img src ="http://www.cppblog.com/ArefaElvis/aggbug/127232.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArefaElvis/" target="_blank">ArefaElvis</a> 2010-09-22 17:44 <a href="http://www.cppblog.com/ArefaElvis/archive/2010/09/22/127232.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>