﻿<?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++博客-Cold Code</title><link>http://www.cppblog.com/bigeast/</link><description /><language>zh-cn</language><lastBuildDate>Sat, 04 Apr 2026 20:05:35 GMT</lastBuildDate><pubDate>Sat, 04 Apr 2026 20:05:35 GMT</pubDate><ttl>60</ttl><item><title>hdoj_1042_10000的阶乘</title><link>http://www.cppblog.com/bigeast/archive/2010/12/06/135595.html</link><dc:creator>cometrue</dc:creator><author>cometrue</author><pubDate>Mon, 06 Dec 2010 10:22:00 GMT</pubDate><guid>http://www.cppblog.com/bigeast/archive/2010/12/06/135595.html</guid><wfw:comment>http://www.cppblog.com/bigeast/comments/135595.html</wfw:comment><comments>http://www.cppblog.com/bigeast/archive/2010/12/06/135595.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bigeast/comments/commentRss/135595.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bigeast/services/trackbacks/135595.html</trackback:ping><description><![CDATA[<div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">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; ">cstring</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; "></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;4</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;a[</span><span style="color: #000000; ">36000</span><span style="color: #000000; ">];<br></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;rev()<br></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">{<br></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;len</span><span style="color: #000000; ">=</span><span style="color: #000000; ">strlen(a),i;<br></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;t;<br></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">len</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; ">i)<br></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000; ">=</span><span style="color: #000000; ">a[i];<br></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">a[len</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">-</span><span style="color: #000000; ">i];<br></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[len</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">-</span><span style="color: #000000; ">i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">t;<br></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">}//strrev()貌似不是标准库函数，囧<br></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; "><br></span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;multi(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n)<br></span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">{<br></span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i,l</span><span style="color: #000000; ">=</span><span style="color: #000000; ">strlen(a),m</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,jw</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;rev();<br></span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;t[</span><span style="color: #000000; ">36000</span><span style="color: #000000; ">];<br></span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">l;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br></span><span style="color: #008080; ">23</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080; ">24</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">((a[i]</span><span style="color: #000000; ">-</span><span style="color: #000000; ">'</span><span style="color: #000000; ">0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">)</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n</span><span style="color: #000000; ">+</span><span style="color: #000000; ">jw)</span><span style="color: #000000; ">%</span><span style="color: #000000; ">10</span><span style="color: #000000; ">+</span><span style="color: #000000; ">'</span><span style="color: #000000; ">0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jw</span><span style="color: #000000; ">=</span><span style="color: #000000; ">((a[i]</span><span style="color: #000000; ">-</span><span style="color: #000000; ">'</span><span style="color: #000000; ">0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">)</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n</span><span style="color: #000000; ">+</span><span style="color: #000000; ">jw)</span><span style="color: #000000; ">/</span><span style="color: #000000; ">10</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; ">27</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(jw</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">)<br></span><span style="color: #008080; ">28</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080; ">29</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">jw</span><span style="color: #000000; ">%</span><span style="color: #000000; ">10</span><span style="color: #000000; ">+</span><span style="color: #000000; ">'</span><span style="color: #000000; ">0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">30</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t[i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(jw</span><span style="color: #000000; ">/</span><span style="color: #000000; ">10</span><span style="color: #000000; ">)</span><span style="color: #000000; ">%</span><span style="color: #000000; ">10</span><span style="color: #000000; ">+</span><span style="color: #000000; ">'</span><span style="color: #000000; ">0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">31</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t[i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">2</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(jw</span><span style="color: #000000; ">/</span><span style="color: #000000; ">100</span><span style="color: #000000; ">)</span><span style="color: #000000; ">%</span><span style="color: #000000; ">10</span><span style="color: #000000; ">+</span><span style="color: #000000; ">'</span><span style="color: #000000; ">0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">32</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t[i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">3</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">jw</span><span style="color: #000000; ">/</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">+</span><span style="color: #000000; ">'</span><span style="color: #000000; ">0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">33</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t[i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">4</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">'</span><span style="color: #000000; ">\0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">34</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; ">35</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(jw</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">100</span><span style="color: #000000; ">)<br></span><span style="color: #008080; ">36</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080; ">37</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">jw</span><span style="color: #000000; ">%</span><span style="color: #000000; ">10</span><span style="color: #000000; ">+</span><span style="color: #000000; ">'</span><span style="color: #000000; ">0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">38</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t[i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(jw</span><span style="color: #000000; ">/</span><span style="color: #000000; ">10</span><span style="color: #000000; ">)</span><span style="color: #000000; ">%</span><span style="color: #000000; ">10</span><span style="color: #000000; ">+</span><span style="color: #000000; ">'</span><span style="color: #000000; ">0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">39</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t[i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">2</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">jw</span><span style="color: #000000; ">/</span><span style="color: #000000; ">100</span><span style="color: #000000; ">+</span><span style="color: #000000; ">'</span><span style="color: #000000; ">0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">40</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t[i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">3</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">'</span><span style="color: #000000; ">\0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">41</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; ">42</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(jw</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">10</span><span style="color: #000000; ">)<br></span><span style="color: #008080; ">43</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080; ">44</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">jw</span><span style="color: #000000; ">%</span><span style="color: #000000; ">10</span><span style="color: #000000; ">+</span><span style="color: #000000; ">'</span><span style="color: #000000; ">0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">45</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t[i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(jw</span><span style="color: #000000; ">/</span><span style="color: #000000; ">10</span><span style="color: #000000; ">)</span><span style="color: #000000; ">%</span><span style="color: #000000; ">10</span><span style="color: #000000; ">+</span><span style="color: #000000; ">'</span><span style="color: #000000; ">0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">46</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t[i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">2</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">'</span><span style="color: #000000; ">\0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">47</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; ">48</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(jw)<br></span><span style="color: #008080; ">49</span>&nbsp;<span style="color: #000000; ">&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;t[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">jw</span><span style="color: #000000; ">+</span><span style="color: #000000; ">'</span><span style="color: #000000; ">0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">51</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t[i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">'</span><span style="color: #000000; ">\0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">52</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; ">53</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;t[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">'</span><span style="color: #000000; ">\0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">54</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;strcpy(a,t);<br></span><span style="color: #008080; ">55</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;rev();<br></span><span style="color: #008080; ">56</span>&nbsp;<span style="color: #000000; ">}//将字符串乘n，需考虑最后的进位的位数。<br></span><span style="color: #008080; ">57</span>&nbsp;<span style="color: #000000; "><br></span><span style="color: #008080; ">58</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; ">59</span>&nbsp;<span style="color: #000000; ">{<br></span><span style="color: #008080; ">60</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n;<br></span><span style="color: #008080; ">61</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">n)<br></span><span style="color: #008080; ">62</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080; ">63</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(a,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">36000</span><span style="color: #000000; ">);<br></span><span style="color: #008080; ">64</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">'</span><span style="color: #000000; ">1</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">65</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">'</span><span style="color: #000000; ">\0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">66</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;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">2</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)multi(i);<br></span><span style="color: #008080; ">67</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">a</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;<br></span><span style="color: #008080; ">68</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; ">69</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">70</span>&nbsp;<span style="color: #000000; ">}<br></span><span style="color: #008080; ">71</span>&nbsp;<span style="color: #000000; "></span></div><br><div>&nbsp;&nbsp;由于一直不肯写个大整数的类，又不会用JAVA，遇到这种题目真是感到很难受。不过我今天用了一种比较耗时但确实思路简单的方法过了这道题。首先，我们必须知道10000！到底有多少位，这样才好定义合适的数组。</div><div>log10（2）+log(3)+...+log10（10000）=35659.9，所以定义一个36000的字符数组就够了。整个实现比较简单但是用了2312MS.....应该分治之类的算法会好点，最快的100MS就过了。估计是重复的反转和复制耗时了。</div><img src ="http://www.cppblog.com/bigeast/aggbug/135595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bigeast/" target="_blank">cometrue</a> 2010-12-06 18:22 <a href="http://www.cppblog.com/bigeast/archive/2010/12/06/135595.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>求N!的位数</title><link>http://www.cppblog.com/bigeast/archive/2010/11/24/134497.html</link><dc:creator>cometrue</dc:creator><author>cometrue</author><pubDate>Wed, 24 Nov 2010 05:35:00 GMT</pubDate><guid>http://www.cppblog.com/bigeast/archive/2010/11/24/134497.html</guid><wfw:comment>http://www.cppblog.com/bigeast/comments/134497.html</wfw:comment><comments>http://www.cppblog.com/bigeast/archive/2010/11/24/134497.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bigeast/comments/commentRss/134497.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bigeast/services/trackbacks/134497.html</trackback:ping><description><![CDATA[<div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008000; ">//</span><span style="color: #008000; ">求N!的位数<br><br></span><span style="color: #008000; ">//</span><span style="color: #008000; ">N!=1*2*3*<img src="http://www.cppblog.com/Images/dot.gif">*N，两边取常用对数，即可算出log10(N!),向上取整即为N!的位数<br></span><span style="color: #008000; ">//</span><span style="color: #008000; ">hdoj&nbsp;&nbsp;&nbsp;&nbsp;984MS&nbsp;&nbsp;&nbsp;&nbsp;344K</span><span style="color: #008000; "><br>/*</span><span style="color: #008000; "><br>#include&nbsp;&lt;iostream&gt;<br>#include&nbsp;&lt;cmath&gt;<br>using&nbsp;namespace&nbsp;std;<br>int&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;sum=0.0;<br>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;n,i,times,res;<br>&nbsp;&nbsp;&nbsp;&nbsp;if(cin&gt;&gt;times&amp;&amp;times!=0)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(times)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin&gt;&gt;n;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=2;i&lt;=n;++i)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum+=log10(i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res=ceil(sum);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;res&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum=0.0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--times;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br>}<br></span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br></span><span style="color: #008000; ">//</span><span style="color: #008000; ">String公式的方法，N!~sqrt(2*pi*N)*(N/e)^N<br></span><span style="color: #008000; ">//</span><span style="color: #008000; ">hdoj&nbsp;&nbsp;&nbsp;&nbsp;0MS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;360K</span><span style="color: #008000; "><br></span><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>#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cmath</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br></span><span style="color: #0000FF; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; ">&nbsp;std;<br></span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">&nbsp;pi</span><span style="color: #000000; ">=</span><span style="color: #000000; ">3.1415926</span><span style="color: #000000; ">;<br></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n,times;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">&nbsp;sum;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">times</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">times)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(times)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">n;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">)</span><span style="color: #000000; ">0.5</span><span style="color: #000000; ">*</span><span style="color: #000000; ">log10(</span><span style="color: #000000; ">2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">pi</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n)</span><span style="color: #000000; ">+</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">)n</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(log10(n)</span><span style="color: #000000; ">-</span><span style="color: #000000; ">log10(exp(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">)ceil(sum)</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">--</span><span style="color: #000000; ">times;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br>}</span></div><img src ="http://www.cppblog.com/bigeast/aggbug/134497.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bigeast/" target="_blank">cometrue</a> 2010-11-24 13:35 <a href="http://www.cppblog.com/bigeast/archive/2010/11/24/134497.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hdoj_1005_Number Sequence</title><link>http://www.cppblog.com/bigeast/archive/2010/11/18/134004.html</link><dc:creator>cometrue</dc:creator><author>cometrue</author><pubDate>Thu, 18 Nov 2010 09:00:00 GMT</pubDate><guid>http://www.cppblog.com/bigeast/archive/2010/11/18/134004.html</guid><wfw:comment>http://www.cppblog.com/bigeast/comments/134004.html</wfw:comment><comments>http://www.cppblog.com/bigeast/archive/2010/11/18/134004.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/bigeast/comments/commentRss/134004.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bigeast/services/trackbacks/134004.html</trackback:ping><description><![CDATA[<div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br></span><span style="color: #0000FF; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; ">&nbsp;std;<br></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a,b,s[</span><span style="color: #000000; ">100</span><span style="color: #000000; ">];<br></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;Pair<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;x;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;y;<br>}res[</span><span style="color: #000000; ">50</span><span style="color: #000000; ">];<br></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n,i,j,k;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">bool</span><span style="color: #000000; ">&nbsp;flag</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;res[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">].x</span><span style="color: #000000; ">=</span><span style="color: #000000; ">res[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">].y</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">a</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">b</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">n)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">(a</span><span style="color: #000000; ">||</span><span style="color: #000000; ">b</span><span style="color: #000000; ">||</span><span style="color: #000000; ">n))</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">50</span><span style="color: #000000; ">;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res[i].x</span><span style="color: #000000; ">=</span><span style="color: #000000; ">res[i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">].y;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res[i].y</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(a</span><span style="color: #000000; ">*</span><span style="color: #000000; ">res[i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">].y</span><span style="color: #000000; ">+</span><span style="color: #000000; ">b</span><span style="color: #000000; ">*</span><span style="color: #000000; ">res[i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">].x)</span><span style="color: #000000; ">%</span><span style="color: #000000; ">7</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;j</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;注意这里循环上限是i-1，这样可以排除三个连续相等的情况。就是把循环节为1的看成2.</span><span style="color: #008000; "><br></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(res[j].x</span><span style="color: #000000; ">==</span><span style="color: #000000; ">res[i].x</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">res[j].y</span><span style="color: #000000; ">==</span><span style="color: #000000; ">res[i].y)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(flag)</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #008000; ">//</span><span style="color: #008000; ">一个循环找出循环节大小</span><span style="color: #008000; "><br></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;注意把标志还原</span><span style="color: #008000; "><br></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(n</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">j)cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">res[n].x</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">未进入循环时</span><span style="color: #008000; "><br></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">((n</span><span style="color: #000000; ">-</span><span style="color: #000000; ">j)</span><span style="color: #000000; ">%</span><span style="color: #000000; ">(i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">j)</span><span style="color: #000000; ">==</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)k</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;k</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(n</span><span style="color: #000000; ">-</span><span style="color: #000000; ">j)</span><span style="color: #000000; ">%</span><span style="color: #000000; ">(i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">j)</span><span style="color: #000000; ">+</span><span style="color: #000000; ">j</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">这个式子改了很长时间，总是会出现问题。这是最终的形式</span><span style="color: #008000; "><br></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">res[k].x</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br>}</span></div>提交了七次终于给过了。是道数论的简单题，不过应该用不到什么高深的知识，关键是找出循环节。因为对于1000000000的大小，如果不找规律的话无论如何也要超时的。分析一下，每个数仅取决于它前面的两个，所以如果出现了相同的数对，则必出现循环。而且，每个数都是0~6之间的一个，可知不同的数对只有7*7=49个，那么只要计算出前50个数，则其中必有相同的两对数出现。上代码。AC之后我想知道循环是不是总是从最前面两个数开始，于是简单写了一个程序，遍历了所有的a,b(易知它们也只有49种组合)，下面是我得到的结果：<div><div>a<span class="Apple-tab-span" style="white-space:pre">	</span>b<span class="Apple-tab-span" style="white-space:pre">	</span>j<span class="Apple-tab-span" style="white-space:pre">	</span>i<span class="Apple-tab-span" style="white-space:pre">	</span>i-j</div><div>0<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>2<span class="Apple-tab-span" style="white-space:pre">	</span>4<span class="Apple-tab-span" style="white-space:pre">	</span>2</div><div>0<span class="Apple-tab-span" style="white-space:pre">	</span>1<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>2<span class="Apple-tab-span" style="white-space:pre">	</span>2</div><div>0<span class="Apple-tab-span" style="white-space:pre">	</span>2<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>6<span class="Apple-tab-span" style="white-space:pre">	</span>6</div><div>0<span class="Apple-tab-span" style="white-space:pre">	</span>3<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>12<span class="Apple-tab-span" style="white-space:pre">	</span>12</div><div>0<span class="Apple-tab-span" style="white-space:pre">	</span>4<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>6<span class="Apple-tab-span" style="white-space:pre">	</span>6</div><div>0<span class="Apple-tab-span" style="white-space:pre">	</span>5<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>12<span class="Apple-tab-span" style="white-space:pre">	</span>12</div><div>0<span class="Apple-tab-span" style="white-space:pre">	</span>6<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>4<span class="Apple-tab-span" style="white-space:pre">	</span>4</div><div>1<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>2<span class="Apple-tab-span" style="white-space:pre">	</span>2</div><div>1<span class="Apple-tab-span" style="white-space:pre">	</span>1<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>16<span class="Apple-tab-span" style="white-space:pre">	</span>16</div><div>1<span class="Apple-tab-span" style="white-space:pre">	</span>2<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>6<span class="Apple-tab-span" style="white-space:pre">	</span>6</div><div>1<span class="Apple-tab-span" style="white-space:pre">	</span>3<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>24<span class="Apple-tab-span" style="white-space:pre">	</span>24</div><div>1<span class="Apple-tab-span" style="white-space:pre">	</span>4<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>48<span class="Apple-tab-span" style="white-space:pre">	</span>48</div><div>1<span class="Apple-tab-span" style="white-space:pre">	</span>5<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>21<span class="Apple-tab-span" style="white-space:pre">	</span>21</div><div>1<span class="Apple-tab-span" style="white-space:pre">	</span>6<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>6<span class="Apple-tab-span" style="white-space:pre">	</span>6</div><div>2<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>1<span class="Apple-tab-span" style="white-space:pre">	</span>4<span class="Apple-tab-span" style="white-space:pre">	</span>3</div><div>2<span class="Apple-tab-span" style="white-space:pre">	</span>1<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>6<span class="Apple-tab-span" style="white-space:pre">	</span>6</div><div>2<span class="Apple-tab-span" style="white-space:pre">	</span>2<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>48<span class="Apple-tab-span" style="white-space:pre">	</span>48</div><div>2<span class="Apple-tab-span" style="white-space:pre">	</span>3<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>6<span class="Apple-tab-span" style="white-space:pre">	</span>6</div><div>2<span class="Apple-tab-span" style="white-space:pre">	</span>4<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>48<span class="Apple-tab-span" style="white-space:pre">	</span>48</div><div>2<span class="Apple-tab-span" style="white-space:pre">	</span>5<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>24<span class="Apple-tab-span" style="white-space:pre">	</span>24</div><div>2<span class="Apple-tab-span" style="white-space:pre">	</span>6<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>2<span class="Apple-tab-span" style="white-space:pre">	</span>2</div><div>3<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>1<span class="Apple-tab-span" style="white-space:pre">	</span>7<span class="Apple-tab-span" style="white-space:pre">	</span>6</div><div>3<span class="Apple-tab-span" style="white-space:pre">	</span>1<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>16<span class="Apple-tab-span" style="white-space:pre">	</span>16</div><div>3<span class="Apple-tab-span" style="white-space:pre">	</span>2<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>48<span class="Apple-tab-span" style="white-space:pre">	</span>48</div><div>3<span class="Apple-tab-span" style="white-space:pre">	</span>3<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>42<span class="Apple-tab-span" style="white-space:pre">	</span>42</div><div>3<span class="Apple-tab-span" style="white-space:pre">	</span>4<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>6<span class="Apple-tab-span" style="white-space:pre">	</span>6</div><div>3<span class="Apple-tab-span" style="white-space:pre">	</span>5<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>2<span class="Apple-tab-span" style="white-space:pre">	</span>2</div><div>3<span class="Apple-tab-span" style="white-space:pre">	</span>6<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>8<span class="Apple-tab-span" style="white-space:pre">	</span>8</div><div>4<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>1<span class="Apple-tab-span" style="white-space:pre">	</span>4<span class="Apple-tab-span" style="white-space:pre">	</span>3</div><div>4<span class="Apple-tab-span" style="white-space:pre">	</span>1<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>16<span class="Apple-tab-span" style="white-space:pre">	</span>16</div><div>4<span class="Apple-tab-span" style="white-space:pre">	</span>2<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>48<span class="Apple-tab-span" style="white-space:pre">	</span>48</div><div>4<span class="Apple-tab-span" style="white-space:pre">	</span>3<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>21<span class="Apple-tab-span" style="white-space:pre">	</span>21</div><div>4<span class="Apple-tab-span" style="white-space:pre">	</span>4<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>2<span class="Apple-tab-span" style="white-space:pre">	</span>2</div><div>4<span class="Apple-tab-span" style="white-space:pre">	</span>5<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>6<span class="Apple-tab-span" style="white-space:pre">	</span>6</div><div>4<span class="Apple-tab-span" style="white-space:pre">	</span>6<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>8<span class="Apple-tab-span" style="white-space:pre">	</span>8</div><div>5<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>1<span class="Apple-tab-span" style="white-space:pre">	</span>7<span class="Apple-tab-span" style="white-space:pre">	</span>6</div><div>5<span class="Apple-tab-span" style="white-space:pre">	</span>1<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>6<span class="Apple-tab-span" style="white-space:pre">	</span>6</div><div>5<span class="Apple-tab-span" style="white-space:pre">	</span>2<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>48<span class="Apple-tab-span" style="white-space:pre">	</span>48</div><div>5<span class="Apple-tab-span" style="white-space:pre">	</span>3<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>2<span class="Apple-tab-span" style="white-space:pre">	</span>2</div><div>5<span class="Apple-tab-span" style="white-space:pre">	</span>4<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>48<span class="Apple-tab-span" style="white-space:pre">	</span>48</div><div>5<span class="Apple-tab-span" style="white-space:pre">	</span>5<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>24<span class="Apple-tab-span" style="white-space:pre">	</span>24</div><div>5<span class="Apple-tab-span" style="white-space:pre">	</span>6<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>14<span class="Apple-tab-span" style="white-space:pre">	</span>14</div><div>6<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>1<span class="Apple-tab-span" style="white-space:pre">	</span>3<span class="Apple-tab-span" style="white-space:pre">	</span>2</div><div>6<span class="Apple-tab-span" style="white-space:pre">	</span>1<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>16<span class="Apple-tab-span" style="white-space:pre">	</span>16</div><div>6<span class="Apple-tab-span" style="white-space:pre">	</span>2<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>2<span class="Apple-tab-span" style="white-space:pre">	</span>2</div><div>6<span class="Apple-tab-span" style="white-space:pre">	</span>3<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>24<span class="Apple-tab-span" style="white-space:pre">	</span>24</div><div>6<span class="Apple-tab-span" style="white-space:pre">	</span>4<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>48<span class="Apple-tab-span" style="white-space:pre">	</span>48</div><div>6<span class="Apple-tab-span" style="white-space:pre">	</span>5<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>42<span class="Apple-tab-span" style="white-space:pre">	</span>42</div><div>6<span class="Apple-tab-span" style="white-space:pre">	</span>6<span class="Apple-tab-span" style="white-space:pre">	</span>0<span class="Apple-tab-span" style="white-space:pre">	</span>3<span class="Apple-tab-span" style="white-space:pre">	</span>3</div></div><div>可见当a,b都是7的倍数时，循环从第三个数开始（以后都是0）；当a,b中只有一个是7的倍数时，循环从第二个数开始（1,0、0,1的情况比较特殊，因为跟开始的1,1重复了所以可以认为是从第一个数开始）；当a,b都不是7的倍数是，循环从第一个数开始。可见还是从第一个数开始循环的多。循环节也有长有短，比如当a=1,b=4时一直到第49个数才出现循环。</div><div><br></div><img src ="http://www.cppblog.com/bigeast/aggbug/134004.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bigeast/" target="_blank">cometrue</a> 2010-11-18 17:00 <a href="http://www.cppblog.com/bigeast/archive/2010/11/18/134004.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO_Section 1.2_palsquare</title><link>http://www.cppblog.com/bigeast/archive/2010/10/21/130774.html</link><dc:creator>cometrue</dc:creator><author>cometrue</author><pubDate>Thu, 21 Oct 2010 09:32:00 GMT</pubDate><guid>http://www.cppblog.com/bigeast/archive/2010/10/21/130774.html</guid><wfw:comment>http://www.cppblog.com/bigeast/comments/130774.html</wfw:comment><comments>http://www.cppblog.com/bigeast/archive/2010/10/21/130774.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bigeast/comments/commentRss/130774.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bigeast/services/trackbacks/130774.html</trackback:ping><description><![CDATA[<div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stdio.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br>#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;conv(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;numb[],</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;num[</span><span style="color: #000000; ">18</span><span style="color: #000000; ">],len</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,j;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(n</span><span style="color: #000000; ">/</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num[len]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">n</span><span style="color: #000000; ">%</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">len;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n</span><span style="color: #000000; ">/=</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;num[len]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">n;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">len;j</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;</span><span style="color: #000000; ">--</span><span style="color: #000000; ">j)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(num[j]</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">9</span><span style="color: #000000; ">)numb[len</span><span style="color: #000000; ">-</span><span style="color: #000000; ">j]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">num[j]</span><span style="color: #000000; ">+</span><span style="color: #000000; ">55</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;numb[len</span><span style="color: #000000; ">-</span><span style="color: #000000; ">j]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">num[j]</span><span style="color: #000000; ">+</span><span style="color: #000000; ">'</span><span style="color: #000000; ">0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;numb[len</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">'</span><span style="color: #000000; ">\0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;;<br>}<br><br><br></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;FILE&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">fin,</span><span style="color: #000000; ">*</span><span style="color: #000000; ">fout;<br>&nbsp;&nbsp;&nbsp;&nbsp;fin</span><span style="color: #000000; ">=</span><span style="color: #000000; ">fopen(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">palsquare.in</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">r</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br>&nbsp;&nbsp;&nbsp;&nbsp;fout</span><span style="color: #000000; ">=</span><span style="color: #000000; ">fopen(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">palsquare.out</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">w</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">,i,len</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,j;<br>&nbsp;&nbsp;&nbsp;&nbsp;fscanf(fin,</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: #0000FF; ">base</span><span style="color: #000000; ">);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">300</span><span style="color: #000000; ">;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;square[</span><span style="color: #000000; ">18</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">{</span><span style="color: #000000; ">'</span><span style="color: #000000; ">\0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">},num[</span><span style="color: #000000; ">10</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">{</span><span style="color: #000000; ">'</span><span style="color: #000000; ">\0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;flag</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conv(num,i,</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conv(square,i</span><span style="color: #000000; ">*</span><span style="color: #000000; ">i,</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len</span><span style="color: #000000; ">=</span><span style="color: #000000; ">strlen(square);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;j</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">len</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; ">j)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(square[j]</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">square[len</span><span style="color: #000000; ">-</span><span style="color: #000000; ">j</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(flag)fprintf(fout,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%s&nbsp;%s\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,num,square);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br>}</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; ">我还是习惯用C写&#8230;&#8230;所以把代码贴上来的时候发现stdio是黑色的，而&#8220;base&#8221;是蓝色的。</div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; ">就这样吧。</div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; ">题目：</div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><center style="font-size: medium; "><strong><font size="7">Palindromic Squares</font></strong><br>Rob Kolstad</center><p style="font-size: medium; ">Palindromes are numbers that read the same forwards as backwards. The number 12321 is a typical palindrome.</p><p style="font-size: medium; ">Given a number base B (2 &lt;= B &lt;= 20 base 10), print all the integers N (1 &lt;= N &lt;= 300 base 10) such that the square of N is palindromic when expressed in base B; also print the value of that palindromic square. Use the letters 'A', 'B', and so on to represent the digits 10, 11, and so on.</p><p style="font-size: medium; ">Print both the number and its square in base B.</p><h3 style="font-size: medium; ">PROGRAM NAME: palsquare</h3><h3 style="font-size: medium; ">INPUT FORMAT</h3><span  style="font-size: medium; ">A single line with B, the base (specified in base 10).</span><h3 style="font-size: medium; ">SAMPLE INPUT (file palsquare.in)</h3><span  style="font-size: medium; "><pre>10
</pre></span><h3 style="font-size: medium; ">OUTPUT FORMAT</h3><span  style="font-size: medium; ">Lines with two integers represented in base B. The first integer is the number whose square is palindromic; the second integer is the square itself.</span><h3 style="font-size: medium; ">SAMPLE OUTPUT (file palsquare.out)</h3><span  style="font-size: medium; "><pre>1 1
2 4
3 9
11 121
22 484
26 676
101 10201
111 12321
121 14641
202 40804
212 44944
264 69696
</pre><div>没有什么复杂的算法，因为这一节讲的就是&#8220;<span  style="font-family: Verdana, Tahoma, sans-serif, Arial, 'Lucida Sans', 'Gill Sans'; ">the brute force, straight-forward, try-them-all method of finding the answer.</span><span  style="font-family: Verdana, Tahoma, sans-serif, Arial, 'Lucida Sans', 'Gill Sans'; ">&nbsp;</span></div><div>&#8221;</div></span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: #000000; "><br></span></div><img src ="http://www.cppblog.com/bigeast/aggbug/130774.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bigeast/" target="_blank">cometrue</a> 2010-10-21 17:32 <a href="http://www.cppblog.com/bigeast/archive/2010/10/21/130774.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO_Section 1.1_beads</title><link>http://www.cppblog.com/bigeast/archive/2010/10/21/130751.html</link><dc:creator>cometrue</dc:creator><author>cometrue</author><pubDate>Thu, 21 Oct 2010 06:54:00 GMT</pubDate><guid>http://www.cppblog.com/bigeast/archive/2010/10/21/130751.html</guid><wfw:comment>http://www.cppblog.com/bigeast/comments/130751.html</wfw:comment><comments>http://www.cppblog.com/bigeast/archive/2010/10/21/130751.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bigeast/comments/commentRss/130751.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bigeast/services/trackbacks/130751.html</trackback:ping><description><![CDATA[
<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><font color="#0000FF"><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><br></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stdio.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br>#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stdlib.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;FILE&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">fin,</span><span style="color: #000000; ">*</span><span style="color: #000000; ">fout;<br>&nbsp;&nbsp;&nbsp;&nbsp;fin</span><span style="color: #000000; ">=</span><span style="color: #000000; ">fopen(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">beads.in</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">r</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br>&nbsp;&nbsp;&nbsp;&nbsp;fout</span><span style="color: #000000; ">=</span><span style="color: #000000; ">fopen(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">beads.out</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">w</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">beads;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n;<br>&nbsp;&nbsp;&nbsp;&nbsp;fscanf(fin,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">n);<br>&nbsp;&nbsp;&nbsp;&nbsp;beads</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)malloc(</span><span style="color: #000000; ">3</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">));<br>&nbsp;&nbsp;&nbsp;&nbsp;fscanf(fin,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%s</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,beads);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i,a,b,left,right,sum</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">n;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">3</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;beads[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">beads[i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">n];<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">n;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;right</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;ch;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(beads[left]</span><span style="color: #000000; ">==</span><span style="color: #000000; ">'</span><span style="color: #000000; ">w</span><span style="color: #000000; ">'</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">left</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)</span><span style="color: #000000; ">--</span><span style="color: #000000; ">left;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ch</span><span style="color: #000000; ">=</span><span style="color: #000000; ">beads[left];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(left</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">(beads[left</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; ">ch</span><span style="color: #000000; ">||</span><span style="color: #000000; ">beads[left</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">==</span><span style="color: #000000; ">'</span><span style="color: #000000; ">w</span><span style="color: #000000; ">'</span><span style="color: #000000; ">))</span><span style="color: #000000; ">--</span><span style="color: #000000; ">left;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">left</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(beads[right]</span><span style="color: #000000; ">==</span><span style="color: #000000; ">'</span><span style="color: #000000; ">w</span><span style="color: #000000; ">'</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">right</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">3</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n)</span><span style="color: #000000; ">++</span><span style="color: #000000; ">right;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ch</span><span style="color: #000000; ">=</span><span style="color: #000000; ">beads[right];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(right</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">(</span><span style="color: #000000; ">3</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">(beads[right</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; ">ch</span><span style="color: #000000; ">||</span><span style="color: #000000; ">beads[right</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">==</span><span style="color: #000000; ">'</span><span style="color: #000000; ">w</span><span style="color: #000000; ">'</span><span style="color: #000000; ">))</span><span style="color: #000000; ">++</span><span style="color: #000000; ">right;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b</span><span style="color: #000000; ">=</span><span style="color: #000000; ">right</span><span style="color: #000000; ">-</span><span style="color: #000000; ">i;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(a</span><span style="color: #000000; ">+</span><span style="color: #000000; ">b</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">sum)sum</span><span style="color: #000000; ">=</span><span style="color: #000000; ">a</span><span style="color: #000000; ">+</span><span style="color: #000000; ">b;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(a</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">n</span><span style="color: #000000; ">||</span><span style="color: #000000; ">b</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">n</span><span style="color: #000000; ">||</span><span style="color: #000000; ">a</span><span style="color: #000000; ">+</span><span style="color: #000000; ">b</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">n)sum</span><span style="color: #000000; ">=</span><span style="color: #000000; ">n;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;fprintf(fout,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,sum);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br>}<br></span></div></font></div></span><div style="color: rgb(75, 75, 75); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; ">首先我的想法是从1到n,left=0,right=1,然后往两边数颜色相同的珠子。如果用一个大小为n的数组存字符串，一个很显然的问题就是当left&lt;0或者right&gt;n-1时就要溢出。所以要用到一个取余的函数。</div><div style="color: rgb(75, 75, 75); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; ">但是这样确实太麻烦了，写的代码也容易出错，我终于决定重写了。新的想法是在字符串两边各复制一份相同的，这样就是大小为3&#215;n的字符串，而循环时只需要从n到2&#215;n-1,解决了溢出的问题。（但是我觉得这并不是一个好方法，因为浪费了三倍的空间）。最终的代码是这样的，虽然AC了，但总不是那么完美。</div><div style="color: rgb(75, 75, 75); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "><br></div><div style="color: rgb(75, 75, 75); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "><br></div><div style="color: rgb(75, 75, 75); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "><br></div><div style="color: rgb(75, 75, 75); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "><br></div><div style="color: rgb(75, 75, 75); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "><br></div><div style="color: rgb(75, 75, 75); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "><br></div><div style="color: rgb(75, 75, 75); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "><br></div><div style="color: rgb(75, 75, 75); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "><br></div><div style="color: rgb(75, 75, 75); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "><br></div><div style="color: rgb(75, 75, 75); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "><br></div><div style="color: rgb(75, 75, 75); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "><br></div><div style="color: rgb(75, 75, 75); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "><br></div><div style="color: rgb(75, 75, 75); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "><br></div>
<img src ="http://www.cppblog.com/bigeast/aggbug/130751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bigeast/" target="_blank">cometrue</a> 2010-10-21 14:54 <a href="http://www.cppblog.com/bigeast/archive/2010/10/21/130751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO_Section 1.1_beads</title><link>http://www.cppblog.com/bigeast/archive/2010/10/21/130748.html</link><dc:creator>cometrue</dc:creator><author>cometrue</author><pubDate>Thu, 21 Oct 2010 06:39:00 GMT</pubDate><guid>http://www.cppblog.com/bigeast/archive/2010/10/21/130748.html</guid><wfw:comment>http://www.cppblog.com/bigeast/comments/130748.html</wfw:comment><comments>http://www.cppblog.com/bigeast/archive/2010/10/21/130748.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bigeast/comments/commentRss/130748.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bigeast/services/trackbacks/130748.html</trackback:ping><description><![CDATA[

题目不难，但是。。。<div>首先我的想法是从1到n,left=0,right=1,然后往两边数颜色相同的珠子。如果用一个大小为n的数组存字符串，一个很显然的问题就是当left&lt;0或者right&gt;n-1时就要溢出。所以要用到一个取余的函数</div><div>int cycle(int a,int n)</div><div>{</div><div>&nbsp;&nbsp; &nbsp;return a&lt;0?(a%n+n):(a%n);</div><div>}</div><div>但是这样确实太麻烦了，写的代码也容易出错，我终于决定重写了。新的想法是在字符串两边各复制一份相同的，这样就是大小为3&#215;n的字符串，而循环时只需要从n到2&#215;n-1,解决了溢出的问题。（但是我觉得这并不是一个好方法，因为浪费了三倍的空间）。最终的代码是这样的，虽然AC了，但总不是那么完美</div><div><div>#include &lt;stdio.h&gt;</div><div>#include &lt;stdlib.h&gt;</div><div>int main()</div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>FILE *fin,*fout;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>fin=fopen("beads.in","r");</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>fout=fopen("beads.out","w");</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>char *beads;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>int n;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>fscanf(fin,"%d",&amp;n);</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>beads=(char *)malloc(3*n*sizeof(char));</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>fscanf(fin,"%s",beads);</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>int i,a,b,left,right,sum=0;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>for(i=n;i&lt;3*n;++i)</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>{</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>beads[i]=beads[i-n];</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>}</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>for(i=n;i&lt;2*n;++i)</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>{</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>left=i;</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>right=i+1;</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>char ch;</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">		</span>while(beads[left]=='w'&amp;&amp;left&gt;=0)--left;</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>ch=beads[left];</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>while(left&gt;0&amp;&amp;(beads[left-1]==ch||beads[left-1]=='w'))--left;</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>a=i-left+1;</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">		</span>while(beads[right]=='w'&amp;&amp;right&lt;3*n)++right;</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>ch=beads[right];</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>while(right&lt;(3*n-1)&amp;&amp;(beads[right+1]==ch||beads[right+1]=='w'))++right;</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>b=right-i;</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">		</span>if(a+b&gt;sum)sum=a+b;</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>if(a&gt;=n||b&gt;=n||a+b&gt;n)sum=n;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>}</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>fprintf(fout,"%d\n",sum);</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>return 0;</div><div>}</div></div><div><br></div><img src ="http://www.cppblog.com/bigeast/aggbug/130748.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bigeast/" target="_blank">cometrue</a> 2010-10-21 14:39 <a href="http://www.cppblog.com/bigeast/archive/2010/10/21/130748.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>