<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>ChanCherry&#39;s Blog</title>
  
  <subtitle>信安萌新，CTFer</subtitle>
  <link href="/atom.xml" rel="self"/>
  
  <link href="http://yoursite.com/"/>
  <updated>2020-06-02T11:25:46.898Z</updated>
  <id>http://yoursite.com/</id>
  
  <author>
    <name>ChanCherry</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>web开发小记</title>
    <link href="http://yoursite.com/2020/06/02/%E9%9A%8F%E7%AC%94/web%E5%BC%80%E5%8F%91%E5%B0%8F%E8%AE%B0/"/>
    <id>http://yoursite.com/2020/06/02/%E9%9A%8F%E7%AC%94/web%E5%BC%80%E5%8F%91%E5%B0%8F%E8%AE%B0/</id>
    <published>2020-06-01T16:00:00.000Z</published>
    <updated>2020-06-02T11:25:46.898Z</updated>
    
    <content type="html"><![CDATA[<p>啊啊啊，今天结束了web开发大作业，开发写代码持续了一周，第一次这么认真从头到尾自己写完一个简单的web系统【捂脸】，想着写一写自己的感受吧（呃呃，写的有点乱）。</p><a id="more"></a><p>这学期web开发的大作业我做了一个学校管理系统，一开始是想做成教务管理系统那种，自己真正写了才发现工程过于浩大，一个人短期内很难完成啊。又一想，先做了比较基础的交作业吧，wtnl</p><p>从5月23号就开始构思了，每天都沉浸在代码的海洋里，每到傍晚都会看的脑壳痛，然后去小花坛跑跑步，然后就感觉很舒服了，回来接着写呜呜。之前几次C、C++大作业都没有想到记录下来，也可能这次自己想到了要记下来就记录下来了，不过还是手写了一点，可能还是更喜欢在纸上乱画吧hhh，虽然好久没写字了，写的字巨丑，看不下去了，就糊糊的贴出来吧。</p><img src="https://img-blog.csdnimg.cn/20200602192334244.JPG" alt="1" style="zoom:30%;"><img src="https://img-blog.csdnimg.cn/20200602192358997.JPG" alt="2" style="zoom:33%;"><p>前几天乱写了一通，然后偶然间在网上看到了Bootstrap框架，然后感觉可以用上，但是感觉有点死板，不好看，但是作为学校的管理系统，还行吧。。。</p><img src="https://img-blog.csdnimg.cn/20200602192423292.png" alt="图片1" style="zoom:33%;"><p>系统有三种角色，学生、教师和管理员，一开始写了学生的部分，比较简单，后来加上教师、管理员的功能越来越多，文件也越来越多，权限越来越大，不过也还好，文件命名比较容易区分，也可以画个流程图来表示一下，我觉得比较方便，推荐processon.com网站。</p><p>后来因为想实现不刷新页面，然后执行查询，直接显示结果在当前26号看了一天的Ajax框架，太头疼了，本身就有点烦不想学了，划水就过了一天，27号早上偶然间发现其实Ajax有两种实现方式，一种原生JS，一种就是jQuery，我之前一直就是看jQuery，然而不好学（短期内），但是JS方法比较简单啊，干嘛一直傻傻的非要用jQuery来实现呢，虽然JS方法视频里都说以后工作中不常用。然后bug就过了。最后就是修改样式了，修改样式调来调去真的麻烦。。。</p><p>6月2号上午，终于答辩完了，虽然我忽视了实现多条件查询，可能是因为我实现了模糊查询，而且也觉得多条件查询没什么意义，就没做这部分了。。。凉凉，被老师问到了，但是其他问题都比较简单，就过了，回来加上多条件查询，最后下午交上报告，结束啦。代码截图报告总共113页，服了。这次的web开发算起来持续了一周才写完，wtcl</p><p>可以说，这一次我从头到尾都自己构思，自己解决的bug，而且很诚心想做出一个系统来，虽然功能不全，很low，TAT。。。但是自己用心做了，就挺有成就感的，老师问也不会担心了【理直气壮】。后续有时间再完善功能吧。。。</p><p>虽然不太想做开发，但是每次修改一个功能的代码，然后去运行，测试，感觉还有点期待，成功了就会很开心，这种感觉还挺好的。不过整体坐在桌边敲代码，真的敲得腰酸背痛，脖子后面巨难受，而且有天还熬到了很晚（2点呜呜），想实现功能真的不困，就是坐着脖子难受，第二天照样6点起，继续。不过持续好几天就不行了【捂脸】，太伤身体了。。。还有我的手有一天都感觉有点鼠标手的迹象了，害。。。</p><p>啊啊啊，还有别的一堆大作业要做，溜了溜了<del>~</del></p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;啊啊啊，今天结束了web开发大作业，开发写代码持续了一周，第一次这么认真从头到尾自己写完一个简单的web系统【捂脸】，想着写一写自己的感受吧（呃呃，写的有点乱）。&lt;/p&gt;
    
    </summary>
    
    
      <category term="随笔" scheme="http://yoursite.com/categories/%E9%9A%8F%E7%AC%94/"/>
    
    
  </entry>
  
  <entry>
    <title>setoolkit进行钓鱼攻击</title>
    <link href="http://yoursite.com/2020/04/23/Web%E5%AE%89%E5%85%A8/setoolkit%E8%BF%9B%E8%A1%8C%E9%92%93%E9%B1%BC%E6%94%BB%E5%87%BB/"/>
    <id>http://yoursite.com/2020/04/23/Web%E5%AE%89%E5%85%A8/setoolkit%E8%BF%9B%E8%A1%8C%E9%92%93%E9%B1%BC%E6%94%BB%E5%87%BB/</id>
    <published>2020-04-22T16:00:00.000Z</published>
    <updated>2020-04-23T13:41:27.063Z</updated>
    
    <content type="html"><![CDATA[<h2 id="此实验仅用于学习，禁止违法目的"><a href="#此实验仅用于学习，禁止违法目的" class="headerlink" title="此实验仅用于学习，禁止违法目的~"></a><font color="red">此实验仅用于学习，禁止违法目的<del>~</del></font></h2><p>setoolkit，即社会工程学工具集Social-Engineer Toolkit，该工具可用来产生钓鱼网站，在kali上可直接使用，github上也有，下载链接 <a href="https://github.com/trustedsec/social-engineer-toolkit/set/。下面就是本次学习的记录了。" target="_blank" rel="noopener">https://github.com/trustedsec/social-engineer-toolkit/set/。下面就是本次学习的记录了。</a></p><a id="more"></a><p>首先打开kali终端，输入<code>setoolkit</code>，就会出现下面<br><img src="https://img-blog.csdnimg.cn/20200423205812850.png" alt="在这里插入图片描述"><br><img src="https://img-blog.csdnimg.cn/20200423205855299.png" alt="在这里插入图片描述"><br>选项菜单：</p><figure class="highlight angelscript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs angelscript"><span class="hljs-number">1</span>、社会工程学攻击<br><span class="hljs-number">2</span>、快速追踪测试<br><span class="hljs-number">3</span>、第三方模块<br><span class="hljs-number">4</span>、升级软件<br><span class="hljs-number">5</span>、升级配置<br><span class="hljs-number">6</span>、帮助<br><span class="hljs-number">99</span>、退出<br></code></pre></td></tr></table></figure><p><strong>选1</strong><br><img src="https://img-blog.csdnimg.cn/20200423210016306.png" alt="在这里插入图片描述"><br>又是选项，</p><figure class="highlight angelscript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs angelscript"><span class="hljs-number">1</span>、鱼叉式网络钓鱼攻击<br><span class="hljs-number">2</span>、网页攻击<br><span class="hljs-number">3</span>、传染媒介式（俗称木马）<br><span class="hljs-number">4</span>、建立payloaad和listener<br><span class="hljs-number">5</span>、邮件群发攻击（夹杂木马啊payload的玩意发给你）<br><span class="hljs-number">6</span>、Arduino基础攻击<br><span class="hljs-number">7</span>、无线接入点攻击<br><span class="hljs-number">8</span>、二维码攻击（我喜欢）<br><span class="hljs-number">9</span>、Powershell攻击<br><span class="hljs-number">10</span>、第三反模块<br><span class="hljs-number">99</span>、返回上级<br></code></pre></td></tr></table></figure><p><strong>选2</strong><br><img src="https://img-blog.csdnimg.cn/20200423210121772.png" alt="在这里插入图片描述"></p><figure class="highlight angelscript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs angelscript"><span class="hljs-number">1</span>、java applet攻击（网页弹窗那种）<br><span class="hljs-number">2</span>、Metasploit 浏览器漏洞攻击<br><span class="hljs-number">3</span>、钓鱼网站攻击<br><span class="hljs-number">4</span>、标签钓鱼攻击<br><span class="hljs-number">5</span>、网站jacking攻击（这个真心不明白，好像也和java的攻击方式有些相同）<br><span class="hljs-number">6</span>、多种网站攻击方式<br><span class="hljs-number">7</span>、全屏幕攻击（不明所以的玩意，只能够对谷歌邮箱和脸书用）<br><span class="hljs-number">99</span>、返回上级<br></code></pre></td></tr></table></figure><p>很明显，<strong>选3</strong><br><img src="https://img-blog.csdnimg.cn/20200423210235236.png" alt="在这里插入图片描述"></p><p>之后可以选择设置1、网站模版，2、设置克隆网站，3、自己设计的网站</p><p><strong>选择2.克隆网站</strong>，输入本机ip，就是[ ]里面的（也可以不输），回车，然后输入要克隆的网站url。<br>我们需要去找一个登录网站，<br><img src="https://img-blog.csdnimg.cn/20200423210443281.png" alt="在这里插入图片描述"></p><p>随便找了一个<a href="https://passport.ustc.edu.cn/login?service=https://jw.ustc.edu.cn/ucas-sso/login" target="_blank" rel="noopener">https://passport.ustc.edu.cn/login?service=https%3A%2F%2Fjw.ustc.edu.cn%2Fucas-sso%2Flogin</a>，回车可以发现网站正在克隆，直到出现下面的就是克隆成功了。<br><img src="https://img-blog.csdnimg.cn/20200423212459539.png" alt="在这里插入图片描述"><br>浏览器中输入kali的ip就可以访问了。<br><img src="https://img-blog.csdnimg.cn/20200423212709617.png" alt="钓鱼网站"><br>可以说和原来的几乎一样了，当然仔细看还是有差别的。一些CSS样式没有克隆下来。下面是原网站：<br><img src="https://img-blog.csdnimg.cn/20200423212757424.png" alt="在这里插入图片描述"><br>在钓鱼网站中输入账号和密码，提交之后在控制台就可以看到输入的信息了，网站也会返回到原来被克隆的网站，不易被人发现。<br><img src="https://img-blog.csdnimg.cn/20200423213216217.png" alt="在这里插入图片描述"><br>还有选择网站模板的方法可参考<a href="https://www.freebuf.com/sectool/73409.html" target="_blank" rel="noopener">https://www.freebuf.com/sectool/73409.html</a></p><h4 id="注意事项："><a href="#注意事项：" class="headerlink" title="注意事项："></a>注意事项：</h4><p>1、使用网站克隆的方式原理：setooltie将网页下载，然后用自己的服务器来进行显示。所以要<br>    占用80端口。PS：用阿里云主机的时候一开始没有将80端口的其他程序关闭，导致端口被占<br>    用，钓鱼网页起不来。<br>2、实际应用的时候，最好布置在公网上，还有将IP和域名绑定。</p><p>PS：千万不要触犯法律哦！</p>]]></content>
    
    <summary type="html">
    
      &lt;h2 id=&quot;此实验仅用于学习，禁止违法目的&quot;&gt;&lt;a href=&quot;#此实验仅用于学习，禁止违法目的&quot; class=&quot;headerlink&quot; title=&quot;此实验仅用于学习，禁止违法目的~&quot;&gt;&lt;/a&gt;&lt;font color=&quot;red&quot;&gt;此实验仅用于学习，禁止违法目的&lt;del&gt;~&lt;/del&gt;&lt;/font&gt;&lt;/h2&gt;&lt;p&gt;setoolkit，即社会工程学工具集Social-Engineer Toolkit，该工具可用来产生钓鱼网站，在kali上可直接使用，github上也有，下载链接 &lt;a href=&quot;https://github.com/trustedsec/social-engineer-toolkit/set/。下面就是本次学习的记录了。&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/trustedsec/social-engineer-toolkit/set/。下面就是本次学习的记录了。&lt;/a&gt;&lt;/p&gt;
    
    </summary>
    
    
      <category term="Web安全" scheme="http://yoursite.com/categories/Web%E5%AE%89%E5%85%A8/"/>
    
    
  </entry>
  
  <entry>
    <title>基础练习 Huffuman树</title>
    <link href="http://yoursite.com/2020/04/10/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%9F%BA%E7%A1%80%E7%BB%83%E4%B9%A0%20Huffuman%E6%A0%91/"/>
    <id>http://yoursite.com/2020/04/10/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%9F%BA%E7%A1%80%E7%BB%83%E4%B9%A0%20Huffuman%E6%A0%91/</id>
    <published>2020-04-09T16:00:00.000Z</published>
    <updated>2020-04-10T03:03:32.649Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>问题描述<br>　　Huffman树在编码中有着广泛的应用。在这里，我们只关心Huffman树的构造过程。<br>　　给出一列数{pi}={p0, p1, …, pn-1}，用这列数构造Huffman树的过程如下：<br>　　1. 找到{pi}中最小的两个数，设为pa和pb，将pa和pb从{pi}中删除掉，然后将它们的和加入到{pi}中。这个过程的费用记为pa + pb。<br>　　2. 重复步骤1，直到{pi}中只剩下一个数。<br>　　在上面的操作过程中，把所有的费用相加，就得到了构造Huffman树的总费用。<br>　　本题任务：对于给定的一个数列，现在请你求出用该数列构造Huffman树的总费用。</p><p>例如，对于数列{pi}={5, 3, 8, 2, 9}，Huffman树的构造过程如下：<br>　　1. 找到{5, 3, 8, 2, 9}中最小的两个数，分别是2和3，从{pi}中删除它们并将和5加入，得到{5, 8, 9, 5}，费用为5。<br>　　2. 找到{5, 8, 9, 5}中最小的两个数，分别是5和5，从{pi}中删除它们并将和10加入，得到{8, 9, 10}，费用为10。<br>　　3. 找到{8, 9, 10}中最小的两个数，分别是8和9，从{pi}中删除它们并将和17加入，得到{10, 17}，费用为17。<br>　　4. 找到{10, 17}中最小的两个数，分别是10和17，从{pi}中删除它们并将和27加入，得到{27}，费用为27。<br>　　5. 现在，数列中只剩下一个数27，构造过程结束，总费用为5+10+17+27=59。 输入格式 　　输入的第一行包含一个正整数n（n&lt;=100）。 　　接下来是n个正整数，表示p0, p1, …, pn-1，每个数不超过1000。<br>输出格式 　　输出用这些数构造Huffman树的总费用。 样例输入 5 5 3 8 2 9 样例输出 59</p></blockquote><p>思路：<br>先将数组升序排序，a[0] 和 a[1]就是当前两个最小的数，然后a[0]+a[1]赋值给a[0]，a[1]赋值为-1，总费用sum加上a[0] ，下一次排序后将这个数删除，依次循环，直到集合中元素只剩一个。</p><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;iostream&gt;</span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;algorithm&gt;</span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> <span class="hljs-built_in">std</span>; <br><span class="hljs-meta">#<span class="hljs-meta-keyword">define</span> maxx 100</span><br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>&#123;<br><span class="hljs-keyword">int</span> a[maxx];<br><span class="hljs-keyword">int</span> i,n;<br><span class="hljs-built_in">cin</span>&gt;&gt;n;<br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i&lt;n;i++)<br><span class="hljs-built_in">cin</span>&gt;&gt;a[i];<br>sort(a,a+n);<span class="hljs-comment">//从大到小排序 </span><br><span class="hljs-keyword">int</span> sum=<span class="hljs-number">0</span>;<br><span class="hljs-keyword">while</span>(n&gt;<span class="hljs-number">1</span>)&#123;<br>i=<span class="hljs-number">0</span>;<br>a[i]=a[i]+a[i+<span class="hljs-number">1</span>];<br>sum+=a[i];<br>a[i+<span class="hljs-number">1</span>]=<span class="hljs-number">-1</span>;<span class="hljs-comment">//将这个数除去</span><br>sort(a,a+n);<br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i&lt;n<span class="hljs-number">-1</span>;i++)<br>a[i]=a[i+<span class="hljs-number">1</span>];<br>n--; <br>&#125;<br><span class="hljs-built_in">cout</span>&lt;&lt;sum&lt;&lt;<span class="hljs-built_in">endl</span>;<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br></code></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      
      
        &lt;blockquote&gt;
&lt;p&gt;问题描述&lt;br&gt;　　Huffman树在编码中有着广泛的应用。在这里，我们只关心Huffman树的构造过程。&lt;br&gt;　　给出一列数{pi}={p0, p1, …, pn-1}，用这列数构造Huffman树的过程如下：&lt;br&gt;　　1. 找到{pi}中最
      
    
    </summary>
    
    
      <category term="蓝桥杯" scheme="http://yoursite.com/categories/%E8%93%9D%E6%A1%A5%E6%9D%AF/"/>
    
    
  </entry>
  
  <entry>
    <title>基础练习 矩阵乘法</title>
    <link href="http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%9F%BA%E7%A1%80%E7%BB%83%E4%B9%A0%20%E7%9F%A9%E9%98%B5%E4%B9%98%E6%B3%95/"/>
    <id>http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%9F%BA%E7%A1%80%E7%BB%83%E4%B9%A0%20%E7%9F%A9%E9%98%B5%E4%B9%98%E6%B3%95/</id>
    <published>2020-04-08T16:00:00.000Z</published>
    <updated>2020-04-09T12:26:09.495Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>问题描述<br>　　给定一个N阶矩阵A，输出A的M次幂（M是非负整数）<br>　　例如：<br>　　A =<br>　　1 2<br>　　3 4<br>　　A的2次幂<br>　　7 10<br>　　15 22<br>输入格式<br>　　第一行是一个正整数N、M（1&lt;=N&lt;=30, 0&lt;=M&lt;=5），表示矩阵A的阶数和要求的幂数<br>　　接下来N行，每行N个绝对值不超过10的非负整数，描述矩阵A的值<br>输出格式<br>　　输出共N行，每行N个整数，表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开<br>样例输入<br>2 2<br>1 2<br>3 4<br>样例输出<br>7 10<br>15 22</p></blockquote><p>–这个题其实不难，就是一开始我忘了矩阵乘法的相关知识Orz(⊙﹏⊙)</p><p>要注意分类讨论，矩阵的0次幂是单位矩阵，1次幂是矩阵本身，2+次幂就要借用另外两个数组来计算了。<br><img src="https://img-blog.csdnimg.cn/20200403225835598.png" alt="在这里插入图片描述"><br>AC代码：</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;stdio.h&gt;</span></span><br><span class="hljs-keyword">int</span> a[<span class="hljs-number">35</span>][<span class="hljs-number">35</span>];<br><span class="hljs-keyword">int</span> b[<span class="hljs-number">35</span>][<span class="hljs-number">35</span>];<br><span class="hljs-keyword">int</span> t[<span class="hljs-number">35</span>][<span class="hljs-number">35</span>];<br><br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>&#123;<br><span class="hljs-keyword">int</span> n,m,i,j,k;<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d%d"</span>,&amp;n,&amp;m);<br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i&lt;n;i++)&#123;<br><span class="hljs-keyword">for</span>(j=<span class="hljs-number">0</span>;j&lt;n;j++)&#123;<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&amp;a[i][j]);<br>b[i][j]=a[i][j];<br>&#125;<br>&#125;<br><span class="hljs-keyword">if</span>(m==<span class="hljs-number">0</span>)&#123;<span class="hljs-comment">//矩阵的0次幂为单位矩阵 </span><br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i&lt;n;i++)&#123; <br><span class="hljs-keyword">for</span>(j=<span class="hljs-number">0</span>;j&lt;n;j++)&#123;<br><span class="hljs-keyword">if</span>(i==j)<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"1 "</span>);<br><span class="hljs-keyword">else</span><br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"0 "</span>);<br>&#125;<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"\n"</span>);<br>&#125;<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<span class="hljs-comment">//要结束程序 </span><br>&#125;<br><span class="hljs-keyword">if</span>(m==<span class="hljs-number">1</span>)&#123;<span class="hljs-comment">//矩阵的1次幂为它本身 </span><br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i&lt;n;i++)&#123;<br><span class="hljs-keyword">for</span>(j=<span class="hljs-number">0</span>;j&lt;n;j++)<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d "</span>,a[i][j]);<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"\n"</span>);<br>&#125;<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<span class="hljs-comment">//要结束程序 </span><br>&#125;<br><br><span class="hljs-keyword">while</span>(m&gt;=<span class="hljs-number">2</span>)&#123;<span class="hljs-comment">//矩阵2次幂及以上需要做运算 </span><br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i&lt;n;i++) <br><span class="hljs-keyword">for</span>(j=<span class="hljs-number">0</span>;j&lt;n;j++)&#123;<br><span class="hljs-keyword">int</span> k=n;<br><span class="hljs-keyword">while</span>(k)&#123;<br>t[i][j]+=b[i][k<span class="hljs-number">-1</span>]*a[k<span class="hljs-number">-1</span>][j];<span class="hljs-comment">//t[i][j]作为中间数组 </span><br>k--;<br>&#125;<br>&#125; <br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i&lt;n;i++)<br><span class="hljs-keyword">for</span>(j=<span class="hljs-number">0</span>;j&lt;n;j++)&#123;<br>b[i][j]=t[i][j];<span class="hljs-comment">//将中间计算得到的数组再赋给b[][]，便于下一次乘法 </span><br>t[i][j]=<span class="hljs-number">0</span>;<br>&#125;<br>m--;<br>&#125;<br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i&lt;n;i++)&#123;<br><span class="hljs-keyword">for</span>(j=<span class="hljs-number">0</span>;j&lt;n;j++)&#123;<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d "</span>,b[i][j]);<br>&#125;<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"\n"</span>);<br>&#125; <br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br></code></pre></td></tr></table></figure><p>一定要注意当m=0和m=1时，要注意结束程序，不然会出错。<br>例如，输入10 0：<br><img src="https://img-blog.csdnimg.cn/20200403230131278.png" alt="在这里插入图片描述"></p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;blockquote&gt;
&lt;p&gt;问题描述&lt;br&gt;　　给定一个N阶矩阵A，输出A的M次幂（M是非负整数）&lt;br&gt;　　例如：&lt;br&gt;　　A =&lt;br&gt;　　1 2&lt;br&gt;　　3 4&lt;br&gt;　　A的2次幂&lt;br&gt;　　7 10&lt;br&gt;　　15 22&lt;br&gt;输入格式&lt;br&gt;　　第一行是一个正
      
    
    </summary>
    
    
      <category term="蓝桥杯" scheme="http://yoursite.com/categories/%E8%93%9D%E6%A1%A5%E6%9D%AF/"/>
    
    
  </entry>
  
  <entry>
    <title>华为云服务器（linux系统）完整配置流程（包含jdk,Tomcat,网页配置等）</title>
    <link href="http://yoursite.com/2020/04/09/%E8%BD%AF%E4%BB%B6%E9%85%8D%E7%BD%AE/%E5%8D%8E%E4%B8%BA%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%88linux%E7%B3%BB%E7%BB%9F%EF%BC%89%E5%AE%8C%E6%95%B4%E9%85%8D%E7%BD%AE%E6%B5%81%E7%A8%8B%EF%BC%88%E5%8C%85%E5%90%ABjdk%E3%80%81Tomcat%E9%85%8D%E7%BD%AE%E3%80%81%E7%BD%91%E9%A1%B5%E9%85%8D%E7%BD%AE%E7%AD%89%EF%BC%89/"/>
    <id>http://yoursite.com/2020/04/09/%E8%BD%AF%E4%BB%B6%E9%85%8D%E7%BD%AE/%E5%8D%8E%E4%B8%BA%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%88linux%E7%B3%BB%E7%BB%9F%EF%BC%89%E5%AE%8C%E6%95%B4%E9%85%8D%E7%BD%AE%E6%B5%81%E7%A8%8B%EF%BC%88%E5%8C%85%E5%90%ABjdk%E3%80%81Tomcat%E9%85%8D%E7%BD%AE%E3%80%81%E7%BD%91%E9%A1%B5%E9%85%8D%E7%BD%AE%E7%AD%89%EF%BC%89/</id>
    <published>2020-04-08T16:00:00.000Z</published>
    <updated>2020-04-09T10:09:36.210Z</updated>
    
    <content type="html"><![CDATA[<p>去年华为云服务器做活动，白嫖了一个弹性云服务器，一直没有用，今天着手来配置一下，不然要过期了。一边配置一边记录流程，亲测有效哦！</p><a id="more"></a><p>首先，需要安装一个远程登陆软件Xshell，可以去<a href="http://www.netsarang.com/download/main.html" target="_blank" rel="noopener">官网</a>下载，也可以找免费的版本。</p><p>华为的云服务器的端口是默认全部打开的，区别于阿里云，阿里云的端口需要自己去打开，两者各有利弊。在华为云控制台修改好密码就可以使用Xshell远程连接使用了。<br><img src="https://img-blog.csdnimg.cn/20200317144609181.png" alt="在这里插入图片描述"><br>打开Xshell，文件-&gt;新建-&gt;填写名称（容易辨别就行）和主机（云服务器的公网IP），其余内容可不变。<br><img src="https://img-blog.csdnimg.cn/2020031714472592.png" alt="在这里插入图片描述"><br>然后双击左边建好的会话名称，就会出现输入用户名（root）和密码（刚刚重置过的），SSH远程登陆云服务器。<br><img src="https://img-blog.csdnimg.cn/20200317145038719.png" alt="在这里插入图片描述"><br>如果出现SSH服务器拒绝了密码，就需要改<code>sshd_config</code>。<br><img src="https://img-blog.csdnimg.cn/20200317145534362.png" alt="在这里插入图片描述"><br>1.点击远程登录，使用屏幕上提示的用户名和密码登录，我的用户名为root，密码就是之前重置的。</p><p>2.输入<code>sudo vi /etc/ssh/sshd_config</code>，然后按<code>a</code>键或者<code>Insert</code>键，找到内容为<code>PasswordAuthentication</code>由<code>no</code>改为<code>yes</code>，改好后按<code>ESC</code>键，再输入<code>:wq</code>保存退出。<br><img src="https://img-blog.csdnimg.cn/20200317145945528.png" alt="在这里插入图片描述"><br>3.输入<code>sudo service sshd reload</code>或<code>sudo service sshd restart</code>重启<code>sshd</code></p><p>左上角小点点由红色代表绿色就说明连接上了，界面里面也会出现一些相关提示语最后登陆时间什么时候啥的，这说明你已经远程连接成功了。登录成功页面如下：<br><img src="https://img-blog.csdnimg.cn/20200317174253787.png" alt="在这里插入图片描述"><br>之后就可以安装一个网站服务器了，可以选择Nginx和Apache，这里选择Apache。<br>（PS：肯定有很多小伙伴会看到有些这里是用Tomcat部署Java Web项目，我看到时也比较困惑。简单来说，Apache是Web应用服务器，适合静态HTML、图片等，但可以通过扩展脚本、模块等支持动态页面等，如果要使用Java的话，你需要Tomcat在Apache后台支撑，将Java请求由Apache转发给Tomcat处理。；Tomcat是应用（Java）服务器，它只是一个Servlet(JSP也翻译成Servlet)容器，可以认为是Apache的扩展，但是可以独立于Apache运行。具体二者的区别可见<a href="https://www.php.cn/apache/427666.htmlhttps://www.php.cn/apache/427666.html" target="_blank" rel="noopener">https://www.php.cn/apache/427666.html</a>）</p><p>下面是安装Java jdk和Tomcat流程：</p><ol><li><p>获取jdk，地址：<a href="https://pan.baidu.com/s/1OJyKcbFq8nM6zizvvG1EkA" target="_blank" rel="noopener">https://pan.baidu.com/s/1OJyKcbFq8nM6zizvvG1EkA</a>        提取码：1tq5</p></li><li><p>点击Xshell上的<code>新建文件传输</code>（如图），<br><img src="https://img-blog.csdnimg.cn/20200317185647738.png" alt="在这里插入图片描述"><br>如果你还没安装Xftp，它会提示你去官网安装，官网可以使用电子邮箱下载免费版本，然后根据它的提示一步一步来就好了。已安装好的请自行跳过。<br><img src="https://img-blog.csdnimg.cn/2020031718561397.png" alt="在这里插入图片描述"><br>或者你嫌麻烦，也可以用这个Xshell4：链接: <a href="https://pan.baidu.com/s/1wf1qg28PP8V5D1GRAbaqOQ" target="_blank" rel="noopener">https://pan.baidu.com/s/1wf1qg28PP8V5D1GRAbaqOQ</a> 提取码: jfbq<br>（1）打开软件之后新建；<br>（2）主机写linux的公网IP，协议选择SFTP，端口号为22；<br>（3）用户名和密码为Linux的账户(root)和密码；<br><img src="https://img-blog.csdnimg.cn/20200317194005948.png" alt="在这里插入图片描述"><br>（4）填写完成之后点击确定，双击创建好的会话，连接到云服务器。软件里即显示本机的文件与Linux的文件，双击文件即可传递，非常方便。<br><img src="https://img-blog.csdnimg.cn/20200317194209504.png" alt="在这里插入图片描述"></p></li><li><p>上传jdk文件到linux服务器上，自己在usr下新建文件夹<code>/usr/software</code>，拖动压缩包文件上传</p></li><li><p>解压jdk压缩包：先用cd命令到达自己上一步创建的文件夹地址：<code>cd /usr/software</code>，再使用解压jdk压缩包命令：<code>tar -xvf jdk-8u65-linux-x64.tar.gz</code>（输入<code>jdk</code>后面可按<code>tab</code>键自动补全）。使用<code>mv jdk1.8.0_161 jdk1.8</code>命令，将<code>jdk1.8.0_161</code>重命名为<code>jdk1.8</code>(方便以后管理和使用)</p></li><li><p>解压完成后更改环境变量。输入命令<code>vi /etc/profile</code>，按<code>i</code>进入编辑模式，光标移到末尾添加以下文本：<code>export JAVA_HOME=/usr/software/jdk1.8 export JRE_HOME=/usr/software/jdk1.8/jre export PATH=$PATH:/usr/software/jdk1.8/bin export CLASSPATH=./:/usr/software/jdk1.8/lib:/usr/software/jdk1.8/jre/lib</code>，如不同，记得更改文件夹名与jdk名。完成后按<code>esc</code>，输入<code>:wq</code>保存并退出。</p></li><li><p>重启服务器。</p></li><li><p>输入<code>java -version</code>出现以下英文证明安装成功。<br><img src="https://img-blog.csdnimg.cn/20200317202014467.png" alt="在这里插入图片描述"></p></li><li><p>进入<a href="http://tomcat.apache.org/" target="_blank" rel="noopener">Tomcat官网</a>下载tomcat安装包，这里下载的是9.0.31版本的。<br><img src="https://img-blog.csdnimg.cn/20200317203226556.png" alt="在这里插入图片描述"></p></li><li><p>将tomcat压缩包通过Xftp上传到服务器<code>/usr/software</code>，后续操作就和上面的jdk类似了。</p></li><li><p>解压tomcat压缩包：<code>cd /usr/software</code>再使用解压缩包命令：<code>tar -xvf apache-tomcat-9.0.31.tar</code> （输入<code>apache</code>后面可按<code>tab</code>键自动补全） </p></li><li><p>解压完成后更改环境变量。输入命令<code>vi /etc/profile</code>，按<code>i</code>进入编辑模式，光标移到末尾添加以下文本（如有不同，记得改文件夹名称）：<code>export CATALINA_HOME=/usr/software/apache-tomcat-9.0.31</code>。完成后按<code>esc</code>，输入<code>:wq</code>保存并退出。</p></li><li><p>进入云服务器的控制台，进入安全组规则中，添加安全组规则，配置8080端口。<br><img src="https://img-blog.csdnimg.cn/20200317230417324.png" alt="在这里插入图片描述"></p></li><li><p>启动tomcat服务器。使用命令<code>cd /usr/software/apache-tomcat-9.0.31/bin</code>先进入tomcat文件夹的bin目录下，输入<code>./startup.sh</code>启动tomcat，成功页面如下：<br><img src="https://img-blog.csdnimg.cn/20200317224108983.png" alt="在这里插入图片描述"></p></li><li><p>接下来在浏览器输入自己的公网ip地址(没有改端口号的话，就在ip地址后加上:8080)，出现 tomcat 的主页，则证明tomcat配置启动成功<br><img src="https://img-blog.csdnimg.cn/2020031723060040.png" alt="在这里插入图片描述"></p></li></ol><p><strong>Tomcat的目录结构</strong>：<br><img src="https://img-blog.csdnimg.cn/20200317233215226.png" alt="在这里插入图片描述"><br><strong>Tomcat重启关闭</strong>：<br>1、Tomcat关闭命令<code>./shutdown.sh</code><br>2、查看Tomcat是否以关闭<code>ps -ef|grep java</code><br>3、如果显示以下相似信息，说明Tomcat还没有关闭<br><img src="https://img-blog.csdnimg.cn/20200317233722696.png" alt="在这里插入图片描述"><br>4、如果你想直接直接杀死Tomcat进程（进程号： 7010），可以使用kill命令 <code>kill -9 7010</code><br>5、然后<code>ps -ef|grep java</code>继续查看Tomcat是否关闭，</p><p>如果出现以下信息，则表示Tomcat已经关闭<br><img src="https://img-blog.csdnimg.cn/20200317233907274.png" alt="在这里插入图片描述"><br>6、最后，启动Tomcat，命令为<code>./startup.sh</code></p><p><strong>如果要部署自己的网页项目，将项目文件夹上传到 Tomcat文件夹下的 Webapps 文件夹里就行。上传好了后，浏览器访问即可。例如：http://云服务器公网ip地址:8080/index/one.html等。</strong>（Tomcat关闭之后输入IP地址等就不能访问你的项目了）</p><p><strong>注意，有个比较坑的地方，修改了server.xml文件的端口后，需要重启服务器，然后再运行程序。<br>如果你修改了对应项目的服务器的配置，那么请用你修改的端口号，而不是server.xml文件里的默认端口号。</strong></p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;去年华为云服务器做活动，白嫖了一个弹性云服务器，一直没有用，今天着手来配置一下，不然要过期了。一边配置一边记录流程，亲测有效哦！&lt;/p&gt;
    
    </summary>
    
    
      <category term="软件配置" scheme="http://yoursite.com/categories/%E8%BD%AF%E4%BB%B6%E9%85%8D%E7%BD%AE/"/>
    
    
  </entry>
  
  <entry>
    <title>基础练习 FJ的字符串</title>
    <link href="http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%9F%BA%E7%A1%80%E7%BB%83%E4%B9%A0%20FJ%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2/"/>
    <id>http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%9F%BA%E7%A1%80%E7%BB%83%E4%B9%A0%20FJ%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2/</id>
    <published>2020-04-08T16:00:00.000Z</published>
    <updated>2020-04-09T12:25:35.151Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>问题描述<br>　　FJ在沙盘上写了这样一些字符串：<br>　　A1 = “A”<br>　　A2 = “ABA”<br>　　A3 = “ABACABA”<br>　　A4 = “ABACABADABACABA”<br>　　… …<br>　　你能找出其中的规律并写所有的数列AN吗？<br>输入格式<br>　　仅有一个数：N ≤ 26。<br>输出格式<br>　　请输出相应的字符串AN，以一个换行符结束。输出中不得含有多余的空格或换行、回车符。<br>样例输入<br>3<br>样例输出<br>ABACABA</p></blockquote><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;stdio.h&gt;</span></span><br><span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">FJ</span><span class="hljs-params">(<span class="hljs-keyword">int</span> n)</span></span>&#123;<span class="hljs-comment">//递归</span><br><span class="hljs-keyword">if</span>(n==<span class="hljs-number">0</span>)<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%c"</span>,<span class="hljs-string">'A'</span>);<br><span class="hljs-keyword">else</span>&#123;<br>FJ(n<span class="hljs-number">-1</span>);<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%c"</span>,n+<span class="hljs-string">'A'</span>);<span class="hljs-comment">//ASCII美国信息交换标准代码表述字母</span><br>FJ(n<span class="hljs-number">-1</span>);<br>&#125;<br>&#125;<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>&#123;<br><span class="hljs-keyword">int</span> n;<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&amp;n);<br>FJ(n<span class="hljs-number">-1</span>);<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"\n"</span>);<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br></code></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      
      
        &lt;blockquote&gt;
&lt;p&gt;问题描述&lt;br&gt;　　FJ在沙盘上写了这样一些字符串：&lt;br&gt;　　A1 = “A”&lt;br&gt;　　A2 = “ABA”&lt;br&gt;　　A3 = “ABACABA”&lt;br&gt;　　A4 = “ABACABADABACABA”&lt;br&gt;　　… …&lt;br&gt;　　你能找出其
      
    
    </summary>
    
    
      <category term="蓝桥杯" scheme="http://yoursite.com/categories/%E8%93%9D%E6%A1%A5%E6%9D%AF/"/>
    
    
  </entry>
  
  <entry>
    <title>基础练习 完美的代价</title>
    <link href="http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%9F%BA%E7%A1%80%E7%BB%83%E4%B9%A0%20%E5%AE%8C%E7%BE%8E%E7%9A%84%E4%BB%A3%E4%BB%B7/"/>
    <id>http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%9F%BA%E7%A1%80%E7%BB%83%E4%B9%A0%20%E5%AE%8C%E7%BE%8E%E7%9A%84%E4%BB%A3%E4%BB%B7/</id>
    <published>2020-04-08T16:00:00.000Z</published>
    <updated>2020-04-09T12:26:27.107Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>问题描述<br>　　回文串，是一种特殊的字符串，它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串，它不一定是回文的，请你计算最少的交换次数使得该串变成一个完美的回文串。<br>　　交换的定义是：交换两个相邻的字符<br>　　例如mamad<br>　　第一次交换 ad : mamda<br>　　第二次交换 md : madma<br>　　第三次交换 ma : madam (回文！完美！)<br>输入格式<br>　　第一行是一个整数N，表示接下来的字符串的长度(N &lt;= 8000)<br>　　第二行是一个字符串，长度为N.只包含小写字母<br>输出格式<br>　　如果可能，输出最少的交换次数。<br>　　否则输出Impossible<br>样例输入<br>5<br>mamad<br>样例输出<br>3</p></blockquote><p><strong>思路</strong>：<br>贪心法，从左边起依次扫描，每记录一个字母，就寻找从右边起最近的与它相同的字母，移动到回文的位置，记录步数，如果最近的与它相同的字母是它本身，说明它在字串里单独存在，可以根据单独存在的字母的个数以及字串的长度来判断impossible的情况，如果排除impossible的情况，则记录它到字串中间的步数，并不需要移动它。<br>其中有两个注意点：</p><ol><li><strong>impossible的情况：如果有一个字符出现的次数是奇数次数，而且n是偶数，那么不可能构成回文；如果n是奇数，但是已经有一个字符出现的次数是奇数次数了，那么如果又有一个字符是奇数次数，就不可能构成回文。</strong></li><li><strong>如果n是奇数，计算中间那个字符交换的次数的时候，不需要模拟把这个数移动到中间去，先把所有的回文数移动到位，再移动中间的奇数</strong>。因为，假设有一对数都在左边或者都在右边，那么交换成回文的时候就要经过中间，就会每次把cnt多加了1，而这个1是没有必要的，因为可以所有的回文移动完了之后再把这个独立的奇数移动过去，才能保证交换次数最少。</li></ol><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;iostream&gt;</span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> <span class="hljs-built_in">std</span>;<br><br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>&#123;<br><span class="hljs-keyword">int</span> n;<br><span class="hljs-built_in">cin</span>&gt;&gt;n;<br><span class="hljs-built_in">string</span> s;<br><span class="hljs-built_in">cin</span>&gt;&gt;s;<br><span class="hljs-keyword">int</span> j=n<span class="hljs-number">-1</span>;<br><span class="hljs-keyword">int</span> cnt=<span class="hljs-number">0</span>;<span class="hljs-comment">//cnt用来统计交换的次数</span><br><span class="hljs-keyword">int</span> flag=<span class="hljs-number">0</span>;<span class="hljs-comment">//flag判断是否已经有一个单独的奇个数的字符了</span><br><span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i=<span class="hljs-number">0</span>;i&lt;j;i++)&#123;<br><span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> k=j;k&gt;=i;k--)&#123;<br><span class="hljs-keyword">if</span>(k==i)&#123;<br><span class="hljs-keyword">if</span>(n%<span class="hljs-number">2</span>==<span class="hljs-number">0</span> || flag==<span class="hljs-number">1</span>)&#123;<br><span class="hljs-built_in">cout</span>&lt;&lt;<span class="hljs-string">"Impossible"</span>;<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br>flag=<span class="hljs-number">1</span>;<br>cnt+=n/<span class="hljs-number">2</span>-i;<br>&#125;<br><span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(s[k]==s[i])&#123;<br><span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> l=k;l&lt;j;l++)&#123;<br>swap(s[l],s[l+<span class="hljs-number">1</span>]);<span class="hljs-comment">//把s[k]换到s[j]处</span><br>cnt++;<span class="hljs-comment">//统计交换次数 </span><br>&#125;<br>j--;<br><span class="hljs-keyword">break</span>; <br>&#125;<br>&#125;<br>&#125; <br><span class="hljs-built_in">cout</span>&lt;&lt;cnt;<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br></code></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      
      
        &lt;blockquote&gt;
&lt;p&gt;问题描述&lt;br&gt;　　回文串，是一种特殊的字符串，它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串，它不一定是回文的，请你计算最少的交换次数使得该串变成一个完美的回文串。&lt;br&gt;　　交换的定义是：交换两个相邻的字符&lt;br&gt;
      
    
    </summary>
    
    
      <category term="蓝桥杯" scheme="http://yoursite.com/categories/%E8%93%9D%E6%A1%A5%E6%9D%AF/"/>
    
    
  </entry>
  
  <entry>
    <title>基础练习 数的读法</title>
    <link href="http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%9F%BA%E7%A1%80%E7%BB%83%E4%B9%A0%20%E6%95%B0%E7%9A%84%E8%AF%BB%E6%B3%95/"/>
    <id>http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%9F%BA%E7%A1%80%E7%BB%83%E4%B9%A0%20%E6%95%B0%E7%9A%84%E8%AF%BB%E6%B3%95/</id>
    <published>2020-04-08T16:00:00.000Z</published>
    <updated>2020-04-09T12:26:17.887Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>问题描述<br>　　Tom教授正在给研究生讲授一门关于基因的课程，有一件事情让他颇为头疼：一条染色体上有成千上万个碱基对，它们从0开始编号，到几百万，几千万，甚至上亿。<br>　　比如说，在对学生讲解第1234567009号位置上的碱基时，光看着数字是很难准确的念出来的。<br>　　所以，他迫切地需要一个系统，然后当他输入12 3456 7009时，会给出相应的念法：<br>　　十二亿三千四百五十六万七千零九<br>　　用汉语拼音表示为<br>　　shi er yi san qian si bai wu shi liu wan qi qian ling jiu<br>　　这样他只需要照着念就可以了。<br>　　你的任务是帮他设计这样一个系统：给定一个阿拉伯数字串，你帮他按照中文读写的规范转为汉语拼音字串，相邻的两个音节用一个空格符格开。<br>　　注意必须严格按照规范，比如说“10010”读作“yi wan ling yi shi”而不是“yi wan ling shi”，“100000”读作“shi wan”而不是“yi shi wan”，“2000”读作“er qian”而不是“liang qian”。<br>输入格式<br>　　有一个数字串，数值大小不超过2,000,000,000。<br>输出格式<br>　　是一个由小写英文字母，逗号和空格组成的字符串，表示该数的英文读法。<br>样例输入<br>1234567009<br>样例输出<br>shi er yi san qian si bai wu shi liu wan qi qian ling jiu</p></blockquote><p>思路：</p><ol><li>首先用一个数组来存放0-9，另一个数组存放单位，单位要注意万以上的单位都只要前一个数字单位了，十万用“十”，百万用“百”等。</li><li>然后考虑几种特殊情况，当0的下一位不是0才会输出ling；</li><li>因为大多数情况都是数字+单位输出的，但是当数字是1，而单位是十、十万、十亿的时候只输出shi，而不是yi shi</li><li>其余的就数字+单位输出了。</li></ol><p>AC代码：</p><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;iostream&gt;</span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> <span class="hljs-built_in">std</span>;<br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;cstring&gt;</span></span><br><br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>&#123;<br><span class="hljs-built_in">string</span> s;<br><span class="hljs-built_in">cin</span>&gt;&gt;s;<br><span class="hljs-keyword">int</span> n=s.length();<br><br><span class="hljs-built_in">string</span> nums[<span class="hljs-number">10</span>]=&#123;<span class="hljs-string">"ling"</span>,<span class="hljs-string">"yi"</span>,<span class="hljs-string">"er"</span>,<span class="hljs-string">"san"</span>,<span class="hljs-string">"si"</span>,<span class="hljs-string">"wu"</span>,<span class="hljs-string">"liu"</span>,<span class="hljs-string">"qi"</span>,<span class="hljs-string">"ba"</span>,<span class="hljs-string">"jiu"</span>&#125;;<span class="hljs-comment">//每一位上的数字 </span><br><span class="hljs-built_in">string</span> units[<span class="hljs-number">11</span>]=&#123;<span class="hljs-string">""</span>,<span class="hljs-string">""</span>,<span class="hljs-string">"shi"</span>,<span class="hljs-string">"bai"</span>,<span class="hljs-string">"qian"</span>,<span class="hljs-string">"wan"</span>,<span class="hljs-string">"shi"</span>,<span class="hljs-string">"bai"</span>,<span class="hljs-string">"qian"</span>,<span class="hljs-string">"yi"</span>,<span class="hljs-string">"shi"</span>&#125;;<span class="hljs-comment">//单位 </span><br><br><span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i=<span class="hljs-number">0</span>;i&lt;n;i++)&#123;<br><span class="hljs-keyword">int</span> num=s[i]-<span class="hljs-string">'0'</span>;<span class="hljs-comment">//字符转换成数字 </span><br><span class="hljs-keyword">if</span>(num==<span class="hljs-number">0</span>)&#123;<br><span class="hljs-comment">//这里要注意C++ string的长度陷阱 </span><br><span class="hljs-keyword">if</span>(i+<span class="hljs-number">1</span>&lt;n &amp;&amp; s[i+<span class="hljs-number">1</span>]!=<span class="hljs-string">'0'</span>)<span class="hljs-comment">//下一个不是0才输出ling </span><br><span class="hljs-built_in">cout</span>&lt;&lt;nums[num]&lt;&lt;<span class="hljs-string">" "</span>;<br>&#125;<br><span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>((n-i==<span class="hljs-number">2</span> || n-i==<span class="hljs-number">6</span> || n-i==<span class="hljs-number">10</span>) &amp;&amp; num==<span class="hljs-number">1</span>)&#123;<br><span class="hljs-comment">//十、十万、十亿位上有1的时候输出shi，而不是yi shi </span><br><span class="hljs-built_in">cout</span>&lt;&lt;units[n-i]&lt;&lt;<span class="hljs-string">" "</span>;<br>&#125;<br><span class="hljs-keyword">else</span>&#123;<br><span class="hljs-built_in">cout</span>&lt;&lt;nums[num]&lt;&lt;<span class="hljs-string">" "</span>&lt;&lt;units[n-i]&lt;&lt;<span class="hljs-string">" "</span>;<br>&#125;<br>&#125;<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br></code></pre></td></tr></table></figure><p>总的来说，这题还是比较坑的orz</p><p>参考自<a href="https://blog.csdn.net/qq_40691051/article/details/105001465" target="_blank" rel="noopener">https://blog.csdn.net/qq_40691051/article/details/105001465</a></p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;blockquote&gt;
&lt;p&gt;问题描述&lt;br&gt;　　Tom教授正在给研究生讲授一门关于基因的课程，有一件事情让他颇为头疼：一条染色体上有成千上万个碱基对，它们从0开始编号，到几百万，几千万，甚至上亿。&lt;br&gt;　　比如说，在对学生讲解第1234567009号位置上的碱基时，光看着数
      
    
    </summary>
    
    
      <category term="蓝桥杯" scheme="http://yoursite.com/categories/%E8%93%9D%E6%A1%A5%E6%9D%AF/"/>
    
    
  </entry>
  
  <entry>
    <title>基础练习 龟兔赛跑预测</title>
    <link href="http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%9F%BA%E7%A1%80%E7%BB%83%E4%B9%A0%20%E9%BE%9F%E5%85%94%E8%B5%9B%E8%B7%91%E9%A2%84%E6%B5%8B/"/>
    <id>http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%9F%BA%E7%A1%80%E7%BB%83%E4%B9%A0%20%E9%BE%9F%E5%85%94%E8%B5%9B%E8%B7%91%E9%A2%84%E6%B5%8B/</id>
    <published>2020-04-08T16:00:00.000Z</published>
    <updated>2020-04-09T12:25:52.719Z</updated>
    
    <content type="html"><![CDATA[<p>话说这个世界上有各种各样的兔子和乌龟，但是研究发现，所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。于是世界上各个角落都不断在发生着乌龟和兔子的比赛，小华对此很感兴趣，于是决定研究不同兔子和乌龟的赛跑。</p><a id="more"></a><blockquote><p>问题描述<br>　　话说这个世界上有各种各样的兔子和乌龟，但是研究发现，所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。于是世界上各个角落都不断在发生着乌龟和兔子的比赛，小华对此很感兴趣，于是决定研究不同兔子和乌龟的赛跑。他发现，兔子虽然跑比乌龟快，但它们有众所周知的毛病——骄傲且懒惰，于是在与乌龟的比赛中，一旦任一秒结束后兔子发现自己领先t米或以上，它们就会停下来休息s秒。对于不同的兔子，t，s的数值是不同的，但是所有的乌龟却是一致——它们不到终点决不停止。<br>　　然而有些比赛相当漫长，全程观看会耗费大量时间，而小华发现只要在每场比赛开始后记录下兔子和乌龟的数据——兔子的速度v1（表示每秒兔子能跑v1米），乌龟的速度v2，以及兔子对应的t，s值，以及赛道的长度l——就能预测出比赛的结果。但是小华很懒，不想通过手工计算推测出比赛的结果，于是他找到了你——清华大学计算机系的高才生——请求帮助，请你写一个程序，对于输入的一场比赛的数据v1，v2，t，s，l，预测该场比赛的结果。<br>输入格式<br>　　输入只有一行，包含用空格隔开的五个正整数v1，v2，t，s，l，其中(v1,v2&lt;=100;t&lt;=300;s&lt;=10;l&lt;=10000且为v1,v2的公倍数)<br>输出格式<br>　　输出包含两行，第一行输出比赛结果——一个大写字母“T”或“R”或“D”，分别表示乌龟获胜，兔子获胜，或者两者同时到达终点。<br>　　第二行输出一个正整数，表示获胜者（或者双方同时）到达终点所耗费的时间（秒数）。<br>样例输入<br>10 5 5 2 20<br>样例输出<br>D<br>4<br>样例输入<br>10 5 5 1 20<br>样例输出<br>R<br>3<br>样例输入<br>10 5 5 3 20<br>样例输出<br>T<br>4</p></blockquote><p><strong>思路</strong>：<br>用两个数组分别存放兔子和乌龟跑的路程，数组下标正好对应跑的时间，再用一个flag标记变量判断兔子是否休息（下标对应时间），用一个数组判断兔子休息的时间段。当兔子或乌龟的路程达到比赛路程l时，就表示比赛结束，相同时间下，谁的路程远就谁胜利。大致就是这样，需要注意兔子休息之后，如果不加判断变量flag，可能会再次判断兔子是否超过乌龟t米，在这上面纠结了好一会，后来终于AC了。╮(─▽─)╭</p><p>AC代码：</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;stdio.h&gt;</span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;string.h&gt;</span></span><br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>&#123;<br><span class="hljs-keyword">int</span> v1,v2,t,s,l,j,i=<span class="hljs-number">0</span>;<br><span class="hljs-keyword">int</span> sr[<span class="hljs-number">10000</span>],st[<span class="hljs-number">10000</span>];<span class="hljs-comment">//分别表示兔子走的路程和乌龟的路程 </span><br><span class="hljs-built_in">memset</span>(sr,<span class="hljs-number">0</span>,<span class="hljs-keyword">sizeof</span>(sr));<br><span class="hljs-built_in">memset</span>(st,<span class="hljs-number">0</span>,<span class="hljs-keyword">sizeof</span>(st));<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d%d%d%d%d"</span>,&amp;v1,&amp;v2,&amp;t,&amp;s,&amp;l);<br><span class="hljs-keyword">int</span> tot[<span class="hljs-number">10000</span>];<br><span class="hljs-built_in">memset</span>(tot,<span class="hljs-number">0</span>,<span class="hljs-keyword">sizeof</span>(tot));<br><br>i=<span class="hljs-number">1</span>;<br><span class="hljs-keyword">int</span> flag=<span class="hljs-number">0</span>;<br><span class="hljs-keyword">while</span>(sr[i]!=l &amp;&amp; st[i]!=l)&#123;<span class="hljs-comment">//两者都没有到达终点 </span><br><span class="hljs-keyword">if</span>(tot[i]==<span class="hljs-number">0</span>)&#123;<br>sr[i]=sr[i<span class="hljs-number">-1</span>]+v1;<br>flag=<span class="hljs-number">0</span>;<br>&#125; <br><span class="hljs-keyword">else</span><br>sr[i]=sr[i<span class="hljs-number">-1</span>];<br><br>st[i]=st[i<span class="hljs-number">-1</span>]+v2;<br><span class="hljs-keyword">if</span>(!flag &amp;&amp; tot[i]!=<span class="hljs-number">1</span>)&#123;<span class="hljs-comment">//用flag变量防止兔子休息过程中再次判断是否休息 </span><br><span class="hljs-keyword">if</span>(sr[i]-st[i]&gt;=t)&#123;<br>flag=<span class="hljs-number">1</span>; <br><span class="hljs-keyword">for</span>(j=i+<span class="hljs-number">1</span>;j&lt;=i+s;j++)&#123;<br>tot[j]=<span class="hljs-number">1</span>;<span class="hljs-comment">//标志兔子休息 </span><br>&#125;<br>&#125;<br>&#125;<br><br><span class="hljs-keyword">if</span>(sr[i]&gt;=l || st[i]&gt;=l)<br><span class="hljs-keyword">break</span>;<br>i++;<br>&#125;<br><br><span class="hljs-keyword">if</span>(sr[i]&gt;st[i])&#123;<span class="hljs-comment">//相同的时间内，看谁的路程远，谁先到 </span><br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"R\n%d\n"</span>,i);<br>&#125;<br><span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(sr[i]&lt;st[i])<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"T\n%d\n"</span>,i);<br><span class="hljs-keyword">else</span><br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"D\n%d\n"</span>,i);<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br></code></pre></td></tr></table></figure><p>可能方法相较于其他的大佬比较繁琐，不过做出来就好了，菜鸡继续学习ing(#^.^#)</p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;话说这个世界上有各种各样的兔子和乌龟，但是研究发现，所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。于是世界上各个角落都不断在发生着乌龟和兔子的比赛，小华对此很感兴趣，于是决定研究不同兔子和乌龟的赛跑。&lt;/p&gt;
    
    </summary>
    
    
      <category term="蓝桥杯" scheme="http://yoursite.com/categories/%E8%93%9D%E6%A1%A5%E6%9D%AF/"/>
    
    
  </entry>
  
  <entry>
    <title>基础练习 芯片测试</title>
    <link href="http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%9F%BA%E7%A1%80%E7%BB%83%E4%B9%A0%20%E8%8A%AF%E7%89%87%E6%B5%8B%E8%AF%95/"/>
    <id>http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%9F%BA%E7%A1%80%E7%BB%83%E4%B9%A0%20%E8%8A%AF%E7%89%87%E6%B5%8B%E8%AF%95/</id>
    <published>2020-04-08T16:00:00.000Z</published>
    <updated>2020-04-09T12:26:35.945Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>问题描述<br>　　有n（2≤n≤20）块芯片，有好有坏，已知好芯片比坏芯片多。<br>　　每个芯片都能用来测试其他芯片。用好芯片测试其他芯片时，能正确给出被测试芯片是好还是坏。而用坏芯片测试其他芯片时，会随机给出好或是坏的测试结果（即此结果与被测试芯片实际的好坏无关）。<br>　　给出所有芯片的测试结果，问哪些芯片是好芯片。<br>输入格式<br>　　输入数据第一行为一个整数n，表示芯片个数。<br>　　第二行到第n+1行为n*n的一张表，每行n个数据。表中的每个数据为0或1，在这n行中的第i行第j列（1≤i, j≤n）的数据表示用第i块芯片测试第j块芯片时得到的测试结果，1表示好，0表示坏，i=j时一律为1（并不表示该芯片对本身的测试结果。芯片不能对本身进行测试）。<br>输出格式<br>　　按从小到大的顺序输出所有好芯片的编号<br>样例输入<br>3<br>1 0 1<br>0 1 0<br>1 0 1<br>样例输出<br>1 3</p></blockquote><p>思路：<br>刚看到这道题是没有思路的，想着假设1号芯片是好的再一一比对，有点麻烦。后来在网上搜，发现简便方法，利用离散中的抽屉原理（还没学过）。</p><p>抽屉原理：如果把n+1个物体放入n个抽屉里，则必有一个抽屉里至少放了两个物体。</p><p>在这道题中的应用就是假如有n/2个芯片说某一个芯片是好的的话，那该芯片就是好的。</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;stdio.h&gt;</span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;string.h&gt; </span></span><br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>&#123;<br><span class="hljs-keyword">int</span> n,i,j;<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&amp;n);<br><span class="hljs-keyword">int</span> a[<span class="hljs-number">22</span>][<span class="hljs-number">22</span>],count[<span class="hljs-number">22</span>];<br><span class="hljs-built_in">memset</span>(count,<span class="hljs-number">0</span>,<span class="hljs-keyword">sizeof</span>(count));<span class="hljs-comment">//初始化 </span><br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">1</span>;i&lt;=n;i++)<br><span class="hljs-keyword">for</span>(j=<span class="hljs-number">1</span>;j&lt;=n;j++)<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&amp;a[i][j]);<br><br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">1</span>;i&lt;=n;i++)&#123;<br><span class="hljs-keyword">for</span>(j=<span class="hljs-number">1</span>;j&lt;=n;j++)&#123;<br><span class="hljs-keyword">if</span>(i!=j &amp;&amp; a[i][j]==<span class="hljs-number">1</span>)<br>count[j]++;<br>&#125;<br>&#125;<br><span class="hljs-keyword">for</span>(j=<span class="hljs-number">1</span>;j&lt;=n;j++)<br><span class="hljs-keyword">if</span>(count[j]&gt;=n/<span class="hljs-number">2</span>)<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d "</span>,j);<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br></code></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      
      
        &lt;blockquote&gt;
&lt;p&gt;问题描述&lt;br&gt;　　有n（2≤n≤20）块芯片，有好有坏，已知好芯片比坏芯片多。&lt;br&gt;　　每个芯片都能用来测试其他芯片。用好芯片测试其他芯片时，能正确给出被测试芯片是好还是坏。而用坏芯片测试其他芯片时，会随机给出好或是坏的测试结果（即此结果与被测
      
    
    </summary>
    
    
      <category term="蓝桥杯" scheme="http://yoursite.com/categories/%E8%93%9D%E6%A1%A5%E6%9D%AF/"/>
    
    
  </entry>
  
  <entry>
    <title>基础练习 矩形面积交</title>
    <link href="http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%9F%BA%E7%A1%80%E7%BB%83%E4%B9%A0%20%E7%9F%A9%E5%BD%A2%E9%9D%A2%E7%A7%AF%E4%BA%A4/"/>
    <id>http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%9F%BA%E7%A1%80%E7%BB%83%E4%B9%A0%20%E7%9F%A9%E5%BD%A2%E9%9D%A2%E7%A7%AF%E4%BA%A4/</id>
    <published>2020-04-08T16:00:00.000Z</published>
    <updated>2020-04-09T12:26:01.013Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>问题描述<br>　　平面上有两个矩形，它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形，我们给出它的一对相对顶点的坐标，请你编程算出两个矩形的交的面积。<br>输入格式<br>　　输入仅包含两行，每行描述一个矩形。<br>　　在每行中，给出矩形的一对相对顶点的坐标，每个点的坐标都用两个绝对值不超过10^7的实数表示。<br>输出格式<br>　　输出仅包含一个实数，为交的面积，保留到小数后两位。<br>样例输入<br>1 1 3 3<br>2 2 4 4<br>样例输出<br>1.00</p></blockquote><p>思路：<br>（1）如果两个矩形相交，<br><img src="https://img-blog.csdnimg.cn/20200404164531312.png" alt="在这里插入图片描述"><br>如图，可以发现，我们只要求出两个矩形相交的主对角线的交点坐标，然后计算面积即可。观察图可以发现，A点横坐标是两个矩形两个小的横坐标的最大值，而B点横坐标是两个矩形两个大的横坐标的最小值，纵坐标类似，就可以求出矩形的长和宽了。<br>（2）若两个矩形不相交，上面的方法就不行了，通过计算得到的交点坐标如下图，很明显是不对滴，所以需要另行判断<br><img src="https://img-blog.csdnimg.cn/20200404170518309.png" alt="在这里插入图片描述"><br>AC代码：</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;stdio.h&gt;</span></span><br><span class="hljs-function"><span class="hljs-keyword">double</span> <span class="hljs-title">max</span><span class="hljs-params">(<span class="hljs-keyword">double</span> a,<span class="hljs-keyword">double</span> b)</span></span>&#123;<br><span class="hljs-keyword">if</span>(a&gt;b)<br><span class="hljs-keyword">return</span> a;<br><span class="hljs-keyword">else</span><br><span class="hljs-keyword">return</span> b;<br>&#125;<br><span class="hljs-function"><span class="hljs-keyword">double</span> <span class="hljs-title">min</span><span class="hljs-params">(<span class="hljs-keyword">double</span> a,<span class="hljs-keyword">double</span> b)</span></span>&#123;<br><span class="hljs-keyword">if</span>(a&lt;b)<br><span class="hljs-keyword">return</span> a;<br><span class="hljs-keyword">else</span><br><span class="hljs-keyword">return</span> b;<br>&#125;<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>&#123;<br><span class="hljs-keyword">double</span> x1,x2,x3,x4,y1,y2,y3,y4,s;<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%lf%lf%lf%lf"</span>,&amp;x1,&amp;y1,&amp;x2,&amp;y2);<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%lf%lf%lf%lf"</span>,&amp;x3,&amp;y3,&amp;x4,&amp;y4);<br><span class="hljs-keyword">double</span> m1,n1,m2,n2;<span class="hljs-comment">//两个交点的坐标 </span><br><span class="hljs-keyword">if</span>(<span class="hljs-built_in">max</span>(x1,x2)&lt;=<span class="hljs-built_in">min</span>(x3,x4) || <span class="hljs-built_in">max</span>(x3,x4)&lt;=<span class="hljs-built_in">min</span>(x1,x2))<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"0.00\n"</span>);<br><span class="hljs-keyword">else</span>&#123;<br>m1=<span class="hljs-built_in">max</span>(<span class="hljs-built_in">min</span>(x1,x2),<span class="hljs-built_in">min</span>(x3,x4));<br>m2=<span class="hljs-built_in">min</span>(<span class="hljs-built_in">max</span>(x1,x2),<span class="hljs-built_in">max</span>(x3,x4));<br>n1=<span class="hljs-built_in">min</span>(<span class="hljs-built_in">max</span>(y1,y2),<span class="hljs-built_in">max</span>(y3,y4));<br>n2=<span class="hljs-built_in">max</span>(<span class="hljs-built_in">min</span>(y1,y2),<span class="hljs-built_in">min</span>(y3,y4));<br>s=(m2-m1)*(n1-n2);<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%.2lf\n"</span>,s);<br>&#125;<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br></code></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      
      
        &lt;blockquote&gt;
&lt;p&gt;问题描述&lt;br&gt;　　平面上有两个矩形，它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形，我们给出它的一对相对顶点的坐标，请你编程算出两个矩形的交的面积。&lt;br&gt;输入格式&lt;br&gt;　　输入仅包含两行，每行描述一个矩形。&lt;br&gt;　　在每行中，给出矩形的
      
    
    </summary>
    
    
      <category term="蓝桥杯" scheme="http://yoursite.com/categories/%E8%93%9D%E6%A1%A5%E6%9D%AF/"/>
    
    
  </entry>
  
  <entry>
    <title>杭电OJ2015偶数求和</title>
    <link href="http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E6%9D%AD%E7%94%B5OJ2015%E5%81%B6%E6%95%B0%E6%B1%82%E5%92%8C/"/>
    <id>http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E6%9D%AD%E7%94%B5OJ2015%E5%81%B6%E6%95%B0%E6%B1%82%E5%92%8C/</id>
    <published>2020-04-08T16:00:00.000Z</published>
    <updated>2020-04-09T10:57:25.467Z</updated>
    
    <content type="html"><![CDATA[<p>Problem Description<br>有一个长度为n(n&lt;=100)的数列，该数列定义为从2开始的递增有序偶数，现在要求你按照顺序每m个数求出一个平均值，如果最后不足m个，则以实际数量求平均值。编程输出该平均值序列。</p><a id="more"></a><p>Input<br>输入数据有多组，每组占一行，包含两个正整数n和m，n和m的含义如上所述。</p><p>Output<br>对于每组输入数据，输出一个平均值序列，每组输出占一行。</p><p>Sample Input</p><p>3 2<br>4 2</p><p>Sample Output</p><p>3 6<br>3 7</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;stdio.h&gt;</span></span><br><br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>&#123;<br><span class="hljs-keyword">int</span> n,m,i;<br><span class="hljs-keyword">int</span> a[<span class="hljs-number">101</span>],b[<span class="hljs-number">101</span>];<br><span class="hljs-keyword">while</span>(<span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d%d"</span>,&amp;n,&amp;m)!=EOF)&#123;<br><span class="hljs-keyword">if</span>(n&gt;<span class="hljs-number">0</span> &amp;&amp; n&lt;=<span class="hljs-number">100</span>)&#123;<br><span class="hljs-keyword">int</span> count=<span class="hljs-number">0</span>,sum=<span class="hljs-number">0</span>,k=<span class="hljs-number">0</span>;<br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i&lt;n;i++)<br>a[i]=(i+<span class="hljs-number">1</span>)*<span class="hljs-number">2</span>;<br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i&lt;n;i++)&#123;<br>count++;<br>sum+=a[i];<br><span class="hljs-comment">//每隔m个数计算一次</span><br><span class="hljs-keyword">if</span>(count==m)&#123;<br>b[k++]=sum/m;<br>sum=<span class="hljs-number">0</span>;<br>count=<span class="hljs-number">0</span>;<br>&#125;<br>&#125;<br><span class="hljs-keyword">if</span>(n%m!=<span class="hljs-number">0</span>)&#123;<br>b[k]=sum/(n%m);<br>k++;<span class="hljs-comment">//保证数组b正常输出</span><br>&#125;<br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i&lt;k<span class="hljs-number">-1</span>;i++)&#123;<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d "</span>,b[i]);<br>&#125;<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d\n"</span>,b[k<span class="hljs-number">-1</span>]);<br>&#125;<br>&#125;<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br></code></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;Problem Description&lt;br&gt;有一个长度为n(n&amp;lt;=100)的数列，该数列定义为从2开始的递增有序偶数，现在要求你按照顺序每m个数求出一个平均值，如果最后不足m个，则以实际数量求平均值。编程输出该平均值序列。&lt;/p&gt;
    
    </summary>
    
    
      <category term="蓝桥杯" scheme="http://yoursite.com/categories/%E8%93%9D%E6%A1%A5%E6%9D%AF/"/>
    
    
  </entry>
  
  <entry>
    <title>多组数阶乘</title>
    <link href="http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%A4%9A%E7%BB%84%E6%95%B0%E9%98%B6%E4%B9%98/"/>
    <id>http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%A4%9A%E7%BB%84%E6%95%B0%E9%98%B6%E4%B9%98/</id>
    <published>2020-04-08T16:00:00.000Z</published>
    <updated>2020-04-09T10:55:09.329Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>Description<br>筒子想求出若干个数每个数的阶乘，请你帮他吧！<br>Input<br>若干数N（0&lt;=N&lt;=20）<br>Output<br>每个数的阶乘</p></blockquote><a id="more"></a><blockquote><p>Sample Input 1<br>1<br>2<br>3</p><p>Sample Output 1<br>1<br>2<br>6</p></blockquote><p>阶乘本来很容易实现，但是多组数的阶乘纠结了一会，其实这就回到了多组输入输出的问题，利用文件结束标志EOF将判断条件设为<code>scanf(&quot;%d&quot;,&amp;n)!=EOF</code>就OK了。<br>还有一个就是要注意，因为是计算多组数的阶乘，所以在每次计算一个n的阶乘之前，都要把s重新赋为1，切记！！！</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;stdio.h&gt;</span></span><br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>&#123;<br>  <span class="hljs-keyword">int</span> n,i;<br>  <span class="hljs-keyword">long</span> s=<span class="hljs-number">1</span>;<br>  <span class="hljs-keyword">while</span>(<span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&amp;n)!=EOF)&#123;<br>  <span class="hljs-keyword">if</span>(n&lt;=<span class="hljs-number">1</span>)&#123;<br>  s=<span class="hljs-number">1</span>;<br>  <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%ld\n"</span>,s);<br>&#125;<br><span class="hljs-keyword">else</span>&#123;<br>s=<span class="hljs-number">1</span>;<span class="hljs-comment">//将s重新赋为1</span><br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">1</span>;i&lt;=n;i++)&#123;<br>s*=i;<br>&#125;<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%ld\n"</span>,s);<br>&#125;<br>&#125;<br>  <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br></code></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      &lt;blockquote&gt;
&lt;p&gt;Description&lt;br&gt;筒子想求出若干个数每个数的阶乘，请你帮他吧！&lt;br&gt;Input&lt;br&gt;若干数N（0&amp;lt;=N&amp;lt;=20）&lt;br&gt;Output&lt;br&gt;每个数的阶乘&lt;/p&gt;
&lt;/blockquote&gt;
    
    </summary>
    
    
      <category term="蓝桥杯" scheme="http://yoursite.com/categories/%E8%93%9D%E6%A1%A5%E6%9D%AF/"/>
    
    
  </entry>
  
  <entry>
    <title>基础练习 Sine之舞</title>
    <link href="http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%9F%BA%E7%A1%80%E7%BB%83%E4%B9%A0%20Sine%E4%B9%8B%E8%88%9E/"/>
    <id>http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E5%9F%BA%E7%A1%80%E7%BB%83%E4%B9%A0%20Sine%E4%B9%8B%E8%88%9E/</id>
    <published>2020-04-08T16:00:00.000Z</published>
    <updated>2020-04-09T12:25:43.277Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>问题描述<br>　　最近FJ为他的奶牛们开设了数学分析课，FJ知道若要学好这门课，必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏，寓教于乐，提高奶牛们的计算能力。<br>　　不妨设<br>　　An=sin(1–sin(2+sin(3–sin(4+…sin(n))…)<br>　　Sn=(…(A1+n)A2+n-1)A3+…+2)An+1<br>　　FJ想让奶牛们计算Sn的值，请你帮助FJ打印出Sn的完整表达式，以方便奶牛们做题。<br>输入格式<br>　　仅有一个数：N&lt;201。<br>输出格式<br>　　请输出相应的表达式Sn，以一个换行符结束。输出中不得含有多余的空格或换行、回车符。<br>样例输入<br>3<br>样例输出<br>((sin(1)+3)sin(1–sin(2))+2)sin(1–sin(2+sin(3)))+1</p></blockquote><p>仔细观察An和Sn，是有规律的，用代码实现出来：</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;stdio.h&gt;</span></span><br><span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">An</span><span class="hljs-params">(<span class="hljs-keyword">int</span> n)</span></span>&#123;<br><span class="hljs-keyword">int</span> i;<br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">1</span>;i&lt;=n;i++)&#123;<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"sin(%d"</span>,i);<br><span class="hljs-keyword">if</span>(i%<span class="hljs-number">2</span>!=<span class="hljs-number">0</span> &amp;&amp; i!=n)<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"-"</span>);<br><span class="hljs-keyword">if</span>(i%<span class="hljs-number">2</span>==<span class="hljs-number">0</span> &amp;&amp; i!=n)<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"+"</span>);<br>&#125;<br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i&lt;n;i++)<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">")"</span>);<br>&#125; <br><br><span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">Sn</span><span class="hljs-params">(<span class="hljs-keyword">int</span> n)</span></span>&#123;<br><span class="hljs-keyword">int</span> i,d;<br>d=n;<br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i&lt;n<span class="hljs-number">-1</span>;i++)<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"("</span>);<br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">1</span>;i&lt;=n;i++)&#123;<br>An(i);<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"+%d"</span>,d);<br><span class="hljs-keyword">if</span>(d!=<span class="hljs-number">1</span>)<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">")"</span>);<br>d--;<br>&#125;<br>&#125;<br><br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>&#123;<br><span class="hljs-keyword">int</span> n;<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&amp;n);<br>Sn(n);<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br></code></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      
      
        &lt;blockquote&gt;
&lt;p&gt;问题描述&lt;br&gt;　　最近FJ为他的奶牛们开设了数学分析课，FJ知道若要学好这门课，必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏，寓教于乐，提高奶牛们的计算能力。&lt;br&gt;　　不妨设&lt;br&gt;　　An=sin(1–sin(
      
    
    </summary>
    
    
      <category term="蓝桥杯" scheme="http://yoursite.com/categories/%E8%93%9D%E6%A1%A5%E6%9D%AF/"/>
    
    
  </entry>
  
  <entry>
    <title>斐波那契数列</title>
    <link href="http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97/"/>
    <id>http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97/</id>
    <published>2020-04-08T16:00:00.000Z</published>
    <updated>2020-04-09T10:38:30.619Z</updated>
    
    <content type="html"><![CDATA[<p>前言：<br>编程渣渣报名了蓝桥杯，不得不刷题来求个心理安慰，祈求获奖。同时也会更新一些刷题中遇到的问题blog作为笔记，便于日后复习，希望能做到每天刷题呀！附上我们学校的刷题OJ：<a href="https://oj.ncutea.com/problems" target="_blank" rel="noopener">https://oj.ncutea.com/problems</a></p><a id="more"></a><h2 id="斐波那契数列问题"><a href="#斐波那契数列问题" class="headerlink" title="斐波那契数列问题"></a>斐波那契数列问题</h2><blockquote><p>Description</p><p>斐波那契数列（Fibonacci sequence），又称黄金分割数列、因数学家列昂纳多·斐波那契（Leonardoda<br>Fibonacci）以兔子繁殖为例子而引入，故又称为“兔子数列”，指的是这样一个数列：1、1、2、3、5、8、13、21、34、……在数学上，斐波纳契数列以如下被以递推的方法定义：F(1)=1，F(2)=1,<br>F(n)=F(n-1)+F(n-2)（n&gt;=3，n∈N*）现在给你一个整数n(n&gt;=1),求斐波那契数列中第n项的值.</p><p>Input 一个正整数n(n&lt;=92)</p><p>Output 一个正整数</p></blockquote><p>如此出名的问题自然有多种解决方案，下面列举两种比较好理解的：</p><ol><li><p>递归<br>递归的缺点就是容易超时，但是代码易懂，简短。OJ上提交会Time out。</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;stdio.h&gt;</span></span><br><span class="hljs-function"><span class="hljs-keyword">long</span> <span class="hljs-title">F</span><span class="hljs-params">(<span class="hljs-keyword">int</span> n)</span></span>&#123;<br>  <span class="hljs-keyword">if</span>(n&lt;=<span class="hljs-number">2</span>)<br>    <span class="hljs-keyword">return</span> <span class="hljs-number">1</span>;<br>  <span class="hljs-keyword">else</span><br>  <span class="hljs-keyword">return</span> F(n<span class="hljs-number">-2</span>)+F(n<span class="hljs-number">-1</span>);<span class="hljs-comment">//递归</span><br>&#125;<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>&#123;<br>  <span class="hljs-keyword">int</span> n;<br>  <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&amp;n);<br>  <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%ld"</span>,F(n));<br>  <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br></code></pre></td></tr></table></figure></li><li><p>循环<br>在各大OJ上提交这种一般是没问题的，不会超时。</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;stdio.h&gt;</span></span><br><span class="hljs-function"><span class="hljs-keyword">long</span> <span class="hljs-title">F</span><span class="hljs-params">(<span class="hljs-keyword">int</span> n)</span></span>&#123;<br>  <span class="hljs-keyword">long</span> f0=<span class="hljs-number">0</span>,f1=<span class="hljs-number">1</span>;<br>  <span class="hljs-keyword">if</span>(n==<span class="hljs-number">0</span>)<br>    <span class="hljs-keyword">return</span> f0;<br>  <span class="hljs-keyword">if</span>(n==<span class="hljs-number">1</span>)<br>    <span class="hljs-keyword">return</span> f1;<br>  <span class="hljs-keyword">long</span> fn=<span class="hljs-number">0</span>;<br>  <span class="hljs-keyword">int</span> i;<br>  <span class="hljs-keyword">for</span>(i=<span class="hljs-number">2</span>;i&lt;=n;i++)&#123;<br>    fn=f0+f1;<br>    f0=f1;<br>    f1=fn;<br>  &#125;<br>  <span class="hljs-keyword">return</span> fn;<br>&#125;<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>&#123;<br>  <span class="hljs-keyword">int</span> n;<br>  <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&amp;n);<br>  <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%ld"</span>,F(n));<br>  <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br></code></pre></td></tr></table></figure></li></ol><p>欢迎大佬批评指正~~</p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;前言：&lt;br&gt;编程渣渣报名了蓝桥杯，不得不刷题来求个心理安慰，祈求获奖。同时也会更新一些刷题中遇到的问题blog作为笔记，便于日后复习，希望能做到每天刷题呀！附上我们学校的刷题OJ：&lt;a href=&quot;https://oj.ncutea.com/problems&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://oj.ncutea.com/problems&lt;/a&gt;&lt;/p&gt;
    
    </summary>
    
    
      <category term="蓝桥杯" scheme="http://yoursite.com/categories/%E8%93%9D%E6%A1%A5%E6%9D%AF/"/>
    
    
  </entry>
  
  <entry>
    <title>杭电2044——一只小蜜蜂</title>
    <link href="http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E6%9D%AD%E7%94%B52044%E2%80%94%E2%80%94%E4%B8%80%E5%8F%AA%E5%B0%8F%E8%9C%9C%E8%9C%82.../"/>
    <id>http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E6%9D%AD%E7%94%B52044%E2%80%94%E2%80%94%E4%B8%80%E5%8F%AA%E5%B0%8F%E8%9C%9C%E8%9C%82.../</id>
    <published>2020-04-08T16:00:00.000Z</published>
    <updated>2020-04-09T10:56:55.287Z</updated>
    
    <content type="html"><![CDATA[<p>Problem Description<br>有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房，不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。</p><a id="more"></a><p>其中，蜂房的结构如下所示。<br><img src="https://img-blog.csdnimg.cn/20200301123816389.png" alt="在这里插入图片描述"></p><p>Input<br>输入数据的第一行是一个整数N,表示测试实例的个数，然后是N 行数据，每行包含两个整数a和b(0&lt;a&lt;b&lt;50)。</p><p>Output<br>对于每个测试实例，请输出蜜蜂从蜂房a爬到蜂房b的可能路线数，每个实例的输出占一行。</p><p>Sample Input<br>2<br>1 2<br>3 6</p><p>Sample Output<br>1<br>3</p><p>这是一道递推的题，观察给出的图形，只有上下两行，容易想到1→2，3→4相当于一样的走法，这就涉及减法相同的问题了。那就只考虑从1到别的蜂房，1→2 1→3 1→4 1→5分别输出1 2 3 5，这就是斐波那契数列了，直接上代码：</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;stdio.h&gt;</span></span><br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">(<span class="hljs-keyword">void</span>)</span></span>&#123;<br><span class="hljs-keyword">int</span> t;<br><span class="hljs-keyword">long</span> <span class="hljs-keyword">long</span> f[<span class="hljs-number">55</span>];<br>f[<span class="hljs-number">1</span>]=<span class="hljs-number">1</span>;<br>f[<span class="hljs-number">2</span>]=<span class="hljs-number">2</span>;<br><span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i=<span class="hljs-number">3</span>;i&lt;<span class="hljs-number">55</span>;i++)&#123;<br>f[i]=f[i<span class="hljs-number">-1</span>]+f[i<span class="hljs-number">-2</span>];<br>&#125;<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,t);<br><span class="hljs-keyword">while</span>(t--)&#123;<br><span class="hljs-keyword">int</span> n,m;<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d%d"</span>,&amp;n,&amp;m);<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%lld\n"</span>,f[m-n]);<br>&#125;<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br></code></pre></td></tr></table></figure><p>或者使用斐波那契数列的通项公式来求，不过要注意公式中n的取值，因为数列：1 1 2 3 5 ……，我们不需要第一项。<br><img src="https://img-blog.csdnimg.cn/20200301124558505.png" alt="在这里插入图片描述"></p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;stdio.h&gt;</span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;math.h&gt;</span></span><br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">(<span class="hljs-keyword">void</span>)</span></span>&#123;<br><span class="hljs-keyword">int</span> n,a,b;<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&amp;n);<br><span class="hljs-keyword">while</span>(n--)&#123;<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d%d"</span>,&amp;a,&amp;b);<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%.0f\n"</span>,<span class="hljs-number">1.0</span>*(<span class="hljs-built_in">pow</span>((<span class="hljs-number">1</span>+<span class="hljs-built_in">sqrt</span>(<span class="hljs-number">5</span>))/<span class="hljs-number">2.0</span>,b-a+<span class="hljs-number">1</span>)-<span class="hljs-built_in">pow</span>((<span class="hljs-number">1</span>-<span class="hljs-built_in">sqrt</span>(<span class="hljs-number">5</span>))/<span class="hljs-number">2.0</span>,b-a+<span class="hljs-number">1</span>))/<span class="hljs-built_in">sqrt</span>(<span class="hljs-number">5</span>));<br>&#125;<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br></code></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;Problem Description&lt;br&gt;有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房，不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。&lt;/p&gt;
    
    </summary>
    
    
      <category term="蓝桥杯" scheme="http://yoursite.com/categories/%E8%93%9D%E6%A1%A5%E6%9D%AF/"/>
    
    
  </entry>
  
  <entry>
    <title>报数游戏（约瑟夫环问题）</title>
    <link href="http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E6%8A%A5%E6%95%B0%E6%B8%B8%E6%88%8F%EF%BC%88%E7%BA%A6%E7%91%9F%E5%A4%AB%E7%8E%AF%E9%97%AE%E9%A2%98%EF%BC%89/"/>
    <id>http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E6%8A%A5%E6%95%B0%E6%B8%B8%E6%88%8F%EF%BC%88%E7%BA%A6%E7%91%9F%E5%A4%AB%E7%8E%AF%E9%97%AE%E9%A2%98%EF%BC%89/</id>
    <published>2020-04-08T16:00:00.000Z</published>
    <updated>2020-04-09T10:55:22.982Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>题目描述：</p><p>有n个小朋友做游戏，他们的编号分别是1,2,3…n。他们按照编号从小到大依次顺时针围成一个圆圈，第一个小朋友从1开始报数，依次按照顺时针方向报数（报数的值加一），每个报m的人会离开队伍，然后下一个小朋友会继续从1开始报数，直到只剩下一个小朋友为止。</p><p>求最后一位小朋友的编号。</p></blockquote><a id="more"></a><blockquote><p>Input<br>输入两个数字n，m(1&lt;=m&lt;=n&lt;100000)，用空格隔开。<br>Output<br>输出最后一个小朋友的编号，独占一行。</p><p>Sample Input 1 </p><p>7 5<br>Sample Output 1</p><p>6</p></blockquote><p>仔细分析，用数组，循环解决：</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span><span class="hljs-meta-string">&lt;stdio.h&gt;</span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span><span class="hljs-meta-string">&lt;stdlib.h&gt;</span></span><br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span><br></span>&#123;<br><span class="hljs-keyword">int</span> n,k,i;<span class="hljs-comment">//总人数n，跳出数字k </span><br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d%d"</span>, &amp;n, &amp;k);<br><span class="hljs-keyword">int</span> *arr=(<span class="hljs-keyword">int</span>*)<span class="hljs-built_in">calloc</span>(n,<span class="hljs-keyword">sizeof</span>(<span class="hljs-keyword">int</span>));<span class="hljs-comment">//分配大小为n的空间，并赋初值0 </span><br><br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i&lt;n;i++)&#123;<span class="hljs-comment">//给这组数赋值 </span><br>arr[i]=i+<span class="hljs-number">1</span>;<br>&#125;<br><span class="hljs-keyword">int</span> t=<span class="hljs-number">0</span>,num=n;<span class="hljs-comment">//计数变量</span><br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">1</span>; ;i++)&#123;<br><span class="hljs-keyword">if</span>(i&gt;n)<span class="hljs-comment">//回溯，从头开始计数 </span><br>i=<span class="hljs-number">1</span>;<br><br><span class="hljs-keyword">if</span>(arr[i<span class="hljs-number">-1</span>]!=<span class="hljs-number">0</span>)<span class="hljs-comment">//计数直到跳出数字k </span><br>++t;<br><br><span class="hljs-keyword">if</span>(t==k)&#123;<br>arr[i<span class="hljs-number">-1</span>]=<span class="hljs-number">0</span>;<br>--num;<br>t=<span class="hljs-number">0</span>;<br>&#125; <br><span class="hljs-keyword">if</span>(num==<span class="hljs-number">1</span>)<span class="hljs-comment">//只剩一人跳出循环 </span><br><span class="hljs-keyword">break</span>;<br>&#125; <br><span class="hljs-comment">//找出最后剩余的一位输出来 </span><br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i&lt;n;i++)&#123;<br><span class="hljs-keyword">if</span>(arr[i]!=<span class="hljs-number">0</span>)&#123;<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d"</span>,arr[i]);<br><span class="hljs-keyword">break</span>;<br>&#125;<br>&#125;<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br></code></pre></td></tr></table></figure><p>百度借鉴大佬的代码，不用数组，用链表：</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span><span class="hljs-meta-string">&lt;stdio.h&gt;  </span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span><span class="hljs-meta-string">&lt;stdlib.h&gt;  </span></span><br><span class="hljs-keyword">typedef</span> <span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">List</span>  <br>&#123;</span>  <br>    <span class="hljs-keyword">int</span>  data;  <br>    <span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">List</span> *<span class="hljs-title">next</span>;</span>  <br>&#125;<span class="hljs-built_in">list</span>;  <br>   <br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span>  <br></span>&#123;<br><span class="hljs-built_in">list</span> *L = (<span class="hljs-built_in">list</span>*)<span class="hljs-built_in">calloc</span>(<span class="hljs-number">1</span>, <span class="hljs-keyword">sizeof</span>(<span class="hljs-built_in">list</span>));<span class="hljs-comment">//头结点</span><br>L-&gt;next = <span class="hljs-literal">NULL</span>;<br><span class="hljs-keyword">int</span> n, k, i;<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d%d"</span>, &amp;n, &amp;k);<br> <br><span class="hljs-built_in">list</span> *s, *q = L;<br><span class="hljs-keyword">for</span> (i=<span class="hljs-number">0</span>; i&lt;n; ++i)<span class="hljs-comment">//赋初值</span><br>&#123;<br>s = (<span class="hljs-built_in">list</span>*)<span class="hljs-built_in">calloc</span>(<span class="hljs-number">1</span>, <span class="hljs-keyword">sizeof</span>(<span class="hljs-built_in">list</span>));<br>s-&gt;data = i+<span class="hljs-number">1</span>;<br>s-&gt;next = <span class="hljs-literal">NULL</span>;<br>q-&gt;next = s;<br>q = s;<br>&#125;<br> <br>q-&gt;next = L-&gt;next;<span class="hljs-comment">//让尾结点指向头结点的下一个，即第一个人的位置，单向循环链表创建完成</span><br>q = L-&gt;next;<span class="hljs-comment">//让q指向头结点的下一个</span><br> <br><span class="hljs-keyword">while</span> (q-&gt;next != q)<span class="hljs-comment">//只剩一个元素时，退出循环</span><br>&#123;<br><span class="hljs-keyword">for</span> (i=<span class="hljs-number">1</span>; i&lt;k<span class="hljs-number">-1</span>; ++i)<br>&#123;q = q-&gt;next;&#125;<span class="hljs-comment">//q指向删除节点的前一个</span><br>s = q-&gt;next;<span class="hljs-comment">//s指向删除节点</span><br>q-&gt;next = s-&gt;next;<span class="hljs-comment">//将去除s后的链表重新连接起来</span><br>q = q-&gt;next;<span class="hljs-comment">//让q指向下次循环的起始位置</span><br><span class="hljs-comment">//printf("%d ", s-&gt;data);</span><br><span class="hljs-built_in">free</span>(s);<br>s = <span class="hljs-literal">NULL</span>;<br>&#125;<br> <br><span class="hljs-built_in">printf</span> (<span class="hljs-string">"%d\n"</span>, q-&gt;data);<br><span class="hljs-built_in">free</span>(q);<br>q = <span class="hljs-literal">NULL</span>;<br><span class="hljs-built_in">free</span>(L);<br>L = <span class="hljs-literal">NULL</span>;<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br></code></pre></td></tr></table></figure><p>后来还有大佬写出迄今为止看到的最短小版本 tql：</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span><span class="hljs-meta-string">&lt;stdio.h&gt; </span></span><br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>&#123; <br>  <span class="hljs-keyword">int</span> n, k, i, s = <span class="hljs-number">0</span>; <br>  <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d%d"</span>, &amp;n, &amp;k); <br>  <span class="hljs-keyword">for</span> (i = <span class="hljs-number">2</span>; i &lt;= n; ++i)&#123; <br>    s = (s+k)%i; <br>  &#125; <br>  <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d\n"</span>, s+<span class="hljs-number">1</span>); <br>  <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>; <br>&#125;<br></code></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      &lt;blockquote&gt;
&lt;p&gt;题目描述：&lt;/p&gt;
&lt;p&gt;有n个小朋友做游戏，他们的编号分别是1,2,3…n。他们按照编号从小到大依次顺时针围成一个圆圈，第一个小朋友从1开始报数，依次按照顺时针方向报数（报数的值加一），每个报m的人会离开队伍，然后下一个小朋友会继续从1开始报数，直到只剩下一个小朋友为止。&lt;/p&gt;
&lt;p&gt;求最后一位小朋友的编号。&lt;/p&gt;
&lt;/blockquote&gt;
    
    </summary>
    
    
      <category term="蓝桥杯" scheme="http://yoursite.com/categories/%E8%93%9D%E6%A1%A5%E6%9D%AF/"/>
    
    
  </entry>
  
  <entry>
    <title>颠倒的价牌</title>
    <link href="http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E9%A2%A0%E5%80%92%E7%9A%84%E4%BB%B7%E7%89%8C/"/>
    <id>http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E9%A2%A0%E5%80%92%E7%9A%84%E4%BB%B7%E7%89%8C/</id>
    <published>2020-04-08T16:00:00.000Z</published>
    <updated>2020-04-09T10:54:34.302Z</updated>
    
    <content type="html"><![CDATA[<p>Description</p><p>小李的店里专卖其它店中下架的样品电视机，可称为：样品电视专卖店。<br>其标价都是4位数字（即千元不等）。<br>小李为了标价清晰、方便，使用了预制的类似数码管的标价签，只要用颜色笔涂数字就可以了（参见图片）。</p><a id="more"></a><p><img src="https://img-blog.csdnimg.cn/20200308222930751.png" alt="在这里插入图片描述"><br>这种价牌有个特点，对一些数字，倒过来看也是合理的数字。如：1 2 5 6 8 9 0 都可以。这样一来，如果牌子挂倒了，有可能完全变成了另一个价格，比如：1958 倒着挂就是：8561，差了几千元啊!!<br>当然，多数情况不能倒读，比如，1110 就不能倒过来，因为0不能作为开始数字。<br>有一天，悲剧终于发生了。某个店员不小心把店里的某两个价格牌给挂倒了。并且这两个价格牌的电视机都卖出去了!<br>庆幸的是价格出入不大，其中一个价牌赔了2百多，另一个价牌却赚了8百多，综合起来，反而多赚了558元。</p><p>请根据这些信息计算：赔钱的那个价牌正确的价格应该是多少？</p><p>Input<br>None</p><p>Output<br>一个4位数字</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;stdio.h&gt;</span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;math.h&gt;</span></span><br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span><br></span>&#123;<br>     <span class="hljs-keyword">int</span> Na, Nb;<br>     <span class="hljs-keyword">int</span> num = <span class="hljs-number">0</span>;<br>     <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">9999</span>; i &gt;= <span class="hljs-number">1000</span>; i--)<span class="hljs-comment">//倒立后的价格</span><br>          <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> j = <span class="hljs-number">1025</span>; j &lt;= <span class="hljs-number">9999</span>; j++)<br>          &#123;<br>               <span class="hljs-keyword">int</span>     m = i, n = j;<br>               <span class="hljs-keyword">int</span>     a[<span class="hljs-number">4</span>], b[<span class="hljs-number">4</span>];<br>               <span class="hljs-keyword">for</span> ( <span class="hljs-keyword">int</span> q = <span class="hljs-number">0</span>; q &lt; <span class="hljs-number">4</span>; q++ )   <span class="hljs-comment">// 真正价格 倒序存入数组</span><br>               &#123;<br>                    <span class="hljs-keyword">int</span>     cheakA= m % <span class="hljs-number">10</span>;<br>                    <span class="hljs-keyword">int</span>     cheakB= n % <span class="hljs-number">10</span>;<br> <br>                    <span class="hljs-comment">/* 6 9 对换 ！！！ */</span><br>                    <span class="hljs-keyword">if</span> ( cheakA == <span class="hljs-number">6</span> )<br>                         cheakA = <span class="hljs-number">9</span>;<br>                    <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> ( cheakA == <span class="hljs-number">9</span> )<br>                         cheakA = <span class="hljs-number">6</span>;<br>                    <span class="hljs-keyword">if</span> ( cheakB == <span class="hljs-number">6</span> )<br>                         cheakB = <span class="hljs-number">9</span>;<br>                    <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> ( cheakB == <span class="hljs-number">9</span> )<br>                         cheakB = <span class="hljs-number">6</span>;<br><br>                    a[q]     = cheakA;<br>                    b[q]     = cheakB;<br><br>                    m     = m / <span class="hljs-number">10</span>;<br>                    n     = n / <span class="hljs-number">10</span>;<br>               &#125;<br> <br> <br>               <span class="hljs-keyword">if</span> (a[<span class="hljs-number">0</span>] != <span class="hljs-number">0</span> &amp;&amp; a[<span class="hljs-number">0</span>] != <span class="hljs-number">3</span> &amp;&amp; a[<span class="hljs-number">0</span>] != <span class="hljs-number">4</span> &amp;&amp; a[<span class="hljs-number">0</span>] != <span class="hljs-number">7</span> &amp;&amp; b[<span class="hljs-number">0</span>] != <span class="hljs-number">0</span> &amp;&amp; b[<span class="hljs-number">0</span>] != <span class="hljs-number">3</span> &amp;&amp; b[<span class="hljs-number">0</span>] != <span class="hljs-number">4</span> &amp;&amp; b[<span class="hljs-number">0</span>] != <span class="hljs-number">7</span>)<br>                    <span class="hljs-keyword">if</span> (a[<span class="hljs-number">3</span>] != <span class="hljs-number">0</span> &amp;&amp; a[<span class="hljs-number">3</span>] != <span class="hljs-number">3</span> &amp;&amp; a[<span class="hljs-number">3</span>] != <span class="hljs-number">4</span> &amp;&amp; a[<span class="hljs-number">3</span>] != <span class="hljs-number">7</span> &amp;&amp; b[<span class="hljs-number">3</span>] != <span class="hljs-number">0</span> &amp;&amp; b[<span class="hljs-number">3</span>] != <span class="hljs-number">3</span> &amp;&amp; b[<span class="hljs-number">3</span>] != <span class="hljs-number">4</span> &amp;&amp; b[<span class="hljs-number">3</span>] != <span class="hljs-number">7</span>)<br>                         <span class="hljs-keyword">if</span> (b[<span class="hljs-number">1</span>] != <span class="hljs-number">3</span> &amp;&amp; b[<span class="hljs-number">1</span>] != <span class="hljs-number">4</span> &amp;&amp; b[<span class="hljs-number">1</span>] != <span class="hljs-number">7</span> &amp;&amp; b[<span class="hljs-number">2</span>] != <span class="hljs-number">3</span> &amp;&amp; b[<span class="hljs-number">2</span>] != <span class="hljs-number">4</span> &amp;&amp; b[<span class="hljs-number">2</span>] != <span class="hljs-number">7</span>)<br>                              <span class="hljs-keyword">if</span> (a[<span class="hljs-number">1</span>] != <span class="hljs-number">3</span> &amp;&amp; a[<span class="hljs-number">1</span>] != <span class="hljs-number">4</span> &amp;&amp; a[<span class="hljs-number">1</span>] != <span class="hljs-number">7</span> &amp;&amp; a[<span class="hljs-number">2</span>] != <span class="hljs-number">3</span> &amp;&amp; a[<span class="hljs-number">2</span>] != <span class="hljs-number">4</span> &amp;&amp; a[<span class="hljs-number">2</span>] != <span class="hljs-number">7</span>)<br>                              &#123;<br>                                   Na = <span class="hljs-number">0</span>; Nb = <span class="hljs-number">0</span>;<br>                                   <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> w = <span class="hljs-number">0</span>; w &lt; <span class="hljs-number">4</span>; w++) <span class="hljs-comment">//倒序前的价格</span><br>                                   &#123;<span class="hljs-comment">//几个数字转化为一个数</span><br>                                        Na= Na * <span class="hljs-number">10</span> + a[w];<br>                                        Nb= Nb * <span class="hljs-number">10</span> + b[w];<br>                                   &#125;<br> <br>                                   <span class="hljs-keyword">if</span> ((i - Na) &gt; <span class="hljs-number">800</span> &amp;&amp; (Nb - j) &gt; <span class="hljs-number">200</span> &amp;&amp; (i - Na) &lt; <span class="hljs-number">900</span> &amp;&amp; (Nb - j) &lt; <span class="hljs-number">300</span>)<br>                                   &#123;<br>                                        <span class="hljs-keyword">if</span> ( (i - Na) - (Nb - j) == <span class="hljs-number">558</span> )<br>                                        &#123;<br>                                             num++;<br>                                             <span class="hljs-built_in">printf</span>( <span class="hljs-string">"倒立后：%d赚钱真实价钱：%d\n"</span>, i, Na );<br>                                             <span class="hljs-built_in">printf</span>( <span class="hljs-string">"倒立后：%d赔钱真实价钱：%d\n"</span>, j, Nb );<br>                                             <span class="hljs-built_in">printf</span>( <span class="hljs-string">"\n"</span> );<br>                                        &#125;<br>                                   &#125;<br>                              &#125;<br>          &#125;<br>     <span class="hljs-built_in">printf</span>( <span class="hljs-string">"%d"</span>, num );<br>     <span class="hljs-keyword">return</span>(<span class="hljs-number">0</span>);<br>&#125;<br></code></pre></td></tr></table></figure><p>百度了一下，还有用两种数组来做的：</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span><span class="hljs-meta-string">&lt;stdio.h&gt;   </span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span><span class="hljs-meta-string">&lt;math.h&gt;  </span></span><br>  <br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>&#123;  <br>    <span class="hljs-keyword">int</span> num1[<span class="hljs-number">7</span>]=&#123;<span class="hljs-number">0</span>,<span class="hljs-number">1</span>,<span class="hljs-number">2</span>,<span class="hljs-number">5</span>,<span class="hljs-number">6</span>,<span class="hljs-number">8</span>,<span class="hljs-number">9</span>&#125;,num2[<span class="hljs-number">7</span>]=&#123;<span class="hljs-number">0</span>,<span class="hljs-number">1</span>,<span class="hljs-number">2</span>,<span class="hljs-number">5</span>,<span class="hljs-number">9</span>,<span class="hljs-number">8</span>,<span class="hljs-number">6</span>&#125;;<span class="hljs-comment">//因为6要变成9，9要变成6，所以定义两个数组，6 9位置颠倒   </span><br>    <span class="hljs-keyword">int</span> a,b,c,d,i,j,k,m;  <br>    <span class="hljs-keyword">int</span> p1,p3,diff1,p2,diff2;<span class="hljs-comment">//p1,p3表示赔二百的，p2表示挣八百的   </span><br>    <span class="hljs-keyword">for</span>(a=<span class="hljs-number">1</span>;a&lt;<span class="hljs-number">7</span>;a++)&#123;  <br>        <span class="hljs-keyword">for</span>(b=<span class="hljs-number">0</span>;b&lt;<span class="hljs-number">7</span>;b++)&#123;  <br>            <span class="hljs-keyword">for</span>(c=<span class="hljs-number">0</span>;c&lt;<span class="hljs-number">7</span>;c++)&#123;  <br>                <span class="hljs-keyword">for</span>(d=<span class="hljs-number">1</span>;d&lt;<span class="hljs-number">7</span>;d++)&#123;  <br>                    p1=num1[a]*<span class="hljs-number">1000</span>+num1[b]*<span class="hljs-number">100</span>+num1[c]*<span class="hljs-number">10</span>+num1[d];  <br>                    p3=num2[d]*<span class="hljs-number">1000</span>+num2[c]*<span class="hljs-number">100</span>+num2[b]*<span class="hljs-number">10</span>+num2[a];  <br>                    diff1=<span class="hljs-built_in">fabs</span>(p1-p3);   <br>                    <span class="hljs-keyword">if</span>(diff1&gt;<span class="hljs-number">200</span>&amp;&amp;diff1&lt;<span class="hljs-number">300</span>)&#123;  <br>                        <span class="hljs-keyword">for</span>(i=<span class="hljs-number">1</span>;i&lt;<span class="hljs-number">7</span>;i++)&#123;  <br>                            <span class="hljs-keyword">for</span>(j=<span class="hljs-number">0</span>;j&lt;<span class="hljs-number">7</span>;j++)&#123;  <br>                                <span class="hljs-keyword">for</span>(k=<span class="hljs-number">0</span>;k&lt;<span class="hljs-number">7</span>;k++)&#123;  <br>                                    <span class="hljs-keyword">for</span>(m=<span class="hljs-number">1</span>;m&lt;<span class="hljs-number">7</span>;m++)&#123;  <br>                                        p2=num1[i]*<span class="hljs-number">1000</span>+num1[j]*<span class="hljs-number">100</span>+num1[k]*<span class="hljs-number">10</span>+num1[m];  <br>                                        diff2=<span class="hljs-built_in">fabs</span>(p2-(num2[m]*<span class="hljs-number">1000</span>+num2[k]*<span class="hljs-number">100</span>+num2[j]*<span class="hljs-number">10</span>+num2[i]));   <br>                                        <span class="hljs-keyword">if</span>(diff2&gt;<span class="hljs-number">800</span>&amp;&amp;diff2&lt;<span class="hljs-number">900</span>&amp;&amp;<span class="hljs-built_in">fabs</span>(diff1-diff2)==<span class="hljs-number">558</span>)&#123;  <br>                                            <span class="hljs-keyword">if</span>(p1&lt;p3)&#123;  <br>                                                <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%5d"</span>,p3);  <br>                                                <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;  <br>                                            &#125;<span class="hljs-keyword">else</span>&#123;  <br>                                                <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%5d"</span>,p1);  <br>                                                <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;  <br>                                            &#125;  <br>                                                  <br>                                        &#125;  <br>                                    &#125;  <br>                                &#125;  <br>                            &#125;  <br>                        &#125;  <br>                    &#125;  <br>                &#125;  <br>            &#125;  <br>        &#125;  <br>    &#125;   <br>    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;  <br>&#125;<br></code></pre></td></tr></table></figure><p>莫的感情的搬运机器QAQ</p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;Description&lt;/p&gt;
&lt;p&gt;小李的店里专卖其它店中下架的样品电视机，可称为：样品电视专卖店。&lt;br&gt;其标价都是4位数字（即千元不等）。&lt;br&gt;小李为了标价清晰、方便，使用了预制的类似数码管的标价签，只要用颜色笔涂数字就可以了（参见图片）。&lt;/p&gt;
    
    </summary>
    
    
      <category term="蓝桥杯" scheme="http://yoursite.com/categories/%E8%93%9D%E6%A1%A5%E6%9D%AF/"/>
    
    
  </entry>
  
  <entry>
    <title>高斯日记</title>
    <link href="http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E9%AB%98%E6%96%AF%E6%97%A5%E8%AE%B0/"/>
    <id>http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E9%AB%98%E6%96%AF%E6%97%A5%E8%AE%B0/</id>
    <published>2020-04-08T16:00:00.000Z</published>
    <updated>2020-04-09T10:56:01.339Z</updated>
    
    <content type="html"><![CDATA[<p>Description</p><p>大数学家高斯有个好习惯：无论如何都要记日记。</p><p>他的日记有个与众不同的地方，他从不注明年月日，而是用一个整数代替，比如：4210</p><p>后来人们知道，那个整数就是日期，它表示那一天是高斯出生后的第几天。这或许也是个好习惯，它时时刻刻提醒着主人：日子又过去一天，还有多少时光可以用于浪费呢？</p><p>高斯出生于：1777年4月30日。</p><p>在高斯发现的一个重要定理的日记上标注着：5343，因此可算出那天是：1791年12月15日。</p><p>高斯获得博士学位的那天日记上标着：8113</p><p>请你算出高斯获得博士学位的年月日。</p><p>注意：只提交这个日期，不要输出其它附加内容，比如：说明性的文字。</p><a id="more"></a><p>Input<br>None</p><p>Output<br>提交答案的格式是：yyyy-mm-dd, 例如：1980-03-21（这个不是答案！！！！）</p><p>原本一着急就纯手算了，还好数学计算能力还行，算起来不费劲，后来改代码运算：</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;stdio.h&gt;</span></span><br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>&#123;<br><span class="hljs-keyword">int</span> year=<span class="hljs-number">1777</span>,mon=<span class="hljs-number">4</span>,day=<span class="hljs-number">30</span>;<span class="hljs-comment">//起始日期</span><br><span class="hljs-keyword">int</span> d;<br><span class="hljs-keyword">bool</span> <span class="hljs-built_in">run</span>=<span class="hljs-number">0</span>;<span class="hljs-comment">//定义闰年</span><br><span class="hljs-keyword">for</span>(d=<span class="hljs-number">1</span>;d&lt;<span class="hljs-number">8113</span>;d++)&#123;<br><span class="hljs-comment">//判断闰年 </span><br><span class="hljs-keyword">if</span>(year%<span class="hljs-number">4</span>==<span class="hljs-number">0</span> &amp;&amp; year%<span class="hljs-number">100</span>!=<span class="hljs-number">0</span> || year%<span class="hljs-number">400</span>==<span class="hljs-number">0</span>)<br><span class="hljs-built_in">run</span>=<span class="hljs-number">1</span>;<br><span class="hljs-keyword">else</span><br><span class="hljs-built_in">run</span>=<span class="hljs-number">0</span>;<br><span class="hljs-comment">//在每月月底，将day置1；年底将mon，day都置1</span><br><span class="hljs-keyword">if</span>(<span class="hljs-built_in">run</span>==<span class="hljs-number">1</span> &amp;&amp; mon==<span class="hljs-number">2</span> &amp;&amp;day==<span class="hljs-number">29</span>)&#123;<br>mon++;<br>day=<span class="hljs-number">1</span>;<br>&#125;<br><span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(<span class="hljs-built_in">run</span>==<span class="hljs-number">0</span> &amp;&amp; mon==<span class="hljs-number">2</span> &amp;&amp; day==<span class="hljs-number">28</span>)&#123;<br>mon++;<br>day=<span class="hljs-number">1</span>;<br>&#125;<br><span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>((mon==<span class="hljs-number">1</span> || mon==<span class="hljs-number">3</span> || mon==<span class="hljs-number">5</span> || mon==<span class="hljs-number">7</span> || mon==<span class="hljs-number">8</span> || mon==<span class="hljs-number">10</span>) &amp;&amp; day==<span class="hljs-number">31</span>)&#123;<br>mon++;<br>day=<span class="hljs-number">1</span>;<br>&#125;<br><span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>((mon==<span class="hljs-number">4</span> || mon==<span class="hljs-number">6</span> ||mon==<span class="hljs-number">9</span> || mon==<span class="hljs-number">11</span>) &amp;&amp; day==<span class="hljs-number">30</span>)&#123;<br>mon++;<br>day=<span class="hljs-number">1</span>;<br>&#125;<br><span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(mon==<span class="hljs-number">12</span> &amp;&amp;day==<span class="hljs-number">31</span>)&#123;<br>year++;<br>mon=<span class="hljs-number">1</span>;day=<span class="hljs-number">1</span>;<br>&#125;<br><span class="hljs-keyword">else</span>&#123;<br>day++;<br>&#125;<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d-%d-%d\n"</span>,year,mon,day);<br>&#125; <br><br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br></code></pre></td></tr></table></figure><p>答案：1799-07-16（一定要注意07！！！）</p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;Description&lt;/p&gt;
&lt;p&gt;大数学家高斯有个好习惯：无论如何都要记日记。&lt;/p&gt;
&lt;p&gt;他的日记有个与众不同的地方，他从不注明年月日，而是用一个整数代替，比如：4210&lt;/p&gt;
&lt;p&gt;后来人们知道，那个整数就是日期，它表示那一天是高斯出生后的第几天。这或许也是个好习惯，它时时刻刻提醒着主人：日子又过去一天，还有多少时光可以用于浪费呢？&lt;/p&gt;
&lt;p&gt;高斯出生于：1777年4月30日。&lt;/p&gt;
&lt;p&gt;在高斯发现的一个重要定理的日记上标注着：5343，因此可算出那天是：1791年12月15日。&lt;/p&gt;
&lt;p&gt;高斯获得博士学位的那天日记上标着：8113&lt;/p&gt;
&lt;p&gt;请你算出高斯获得博士学位的年月日。&lt;/p&gt;
&lt;p&gt;注意：只提交这个日期，不要输出其它附加内容，比如：说明性的文字。&lt;/p&gt;
    
    </summary>
    
    
      <category term="蓝桥杯" scheme="http://yoursite.com/categories/%E8%93%9D%E6%A1%A5%E6%9D%AF/"/>
    
    
  </entry>
  
  <entry>
    <title>算法训练 数字游戏</title>
    <link href="http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E7%AE%97%E6%B3%95%E8%AE%AD%E7%BB%83%20%E6%95%B0%E5%AD%97%E6%B8%B8%E6%88%8F/"/>
    <id>http://yoursite.com/2020/04/09/%E8%93%9D%E6%A1%A5%E6%9D%AF/%E7%AE%97%E6%B3%95%E8%AE%AD%E7%BB%83%20%E6%95%B0%E5%AD%97%E6%B8%B8%E6%88%8F/</id>
    <published>2020-04-08T16:00:00.000Z</published>
    <updated>2020-04-09T12:26:44.154Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>问题描述<br>　　给定一个1～N的排列a[i]，每次将相邻两个数相加，得到新序列，再对新序列重复这样的操作，显然每次得到的序列都比上一次的序列长度少1，最终只剩一个数字。<br>　　例如:<br>　　3 1 2 4<br>　　4 3 6<br>　　7 9<br>　　16<br>　　现在如果知道N和最后得到的数字sum，请求出最初序列a[i]，为1～N的一个排列。若有多种答案，则输出字典序最小的那一个。数据保证有解。<br>输入格式<br>　　第1行为两个正整数n，sum<br>输出格式<br>　　一个1～N的一个排列<br>样例输入<br>4 16<br>样例输出<br>3 1 2 4<br>数据规模和约定<br>　　0&lt;n&lt;=10</p></blockquote><h1 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h1><p>一看 n&lt;=10那直接暴力了。<br>使用vector容器，借助C++中next_permutation()函数，升序列举出所有的全排列序列，然后循环对每个序列都<strong>操作</strong>并判断，如果找到，就break即可。<br>这里一次操作其实就是把<code>1~n-1</code>下标的元素，依次加上它后面的元素，这个操作重复n-1次即可，最后判断数组下标0和结果sum是否相等即可。</p><p>用到的函数：<br>next_permutation函数将按字母表顺序生成给定序列的下一个较大的排列，直到整个序列为降序为止。prev_permutation函数与之相反，是生成给定序列的上一个较小的排列。<br>这是一个求一个排序的下一个排列的函数，可以遍历全排列,要包含头文件<code>&lt;algorithm&gt;</code><br>使用方法：next_permutation(数组头地址，数组尾地址);若下一个排列存在，则返回真，如果不存在则返回假。</p><p>百度解释：<br>boolean next_permutation(a.begin(),a.end())<br>该函数是以输入字符串中的字符所构建的按字典顺序全排列中，判断当前字符串之后是否还有下一个字符串。如果next_permutation的执行次数少于全排列的个数，返回true。</p><p>例如 a=”abc” 全排列有 “abc” “acb” “bac” “bca” “cab” “cba”<br>执行一次next_permutation 返回true a变成 “acb”<br>再执行一次next_permutation 返回true a变成 “bac”<br>…<br>当执行到a=”cba” 时 由于这已经是全排列的最后一个字符串，所以 再次执行next_permutation 则返回false</p><h1 id="AC代码"><a href="#AC代码" class="headerlink" title="AC代码"></a>AC代码</h1><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;iostream&gt;</span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;vector&gt;</span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;algorithm&gt;</span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> <span class="hljs-built_in">std</span>;<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>&#123;<br><span class="hljs-keyword">int</span> n,sum,i,j,sum1=<span class="hljs-number">0</span>;<br><span class="hljs-built_in">cin</span>&gt;&gt;n&gt;&gt;sum;<br><span class="hljs-function"><span class="hljs-built_in">vector</span>&lt;<span class="hljs-keyword">int</span>&gt; <span class="hljs-title">a</span><span class="hljs-params">(n)</span></span>;<br><span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i=<span class="hljs-number">0</span>;i&lt;n;i++)<br>a[i]=i+<span class="hljs-number">1</span>;<br><span class="hljs-keyword">do</span>&#123;<br><span class="hljs-built_in">vector</span>&lt;<span class="hljs-keyword">int</span>&gt; b=a;<span class="hljs-comment">//将数组a复制给b </span><br><span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i=<span class="hljs-number">0</span>;i&lt;n<span class="hljs-number">-1</span>;i++)<br><span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> j=<span class="hljs-number">0</span>;j&lt;n-i<span class="hljs-number">-1</span>;j++)<br>b[j]+=b[j+<span class="hljs-number">1</span>];<span class="hljs-comment">//b[0]=b[0]+b[1],b[1]=b[1]+b[2]...</span><br><span class="hljs-keyword">if</span>(b[<span class="hljs-number">0</span>]==sum)&#123;<br><span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i=<span class="hljs-number">0</span>;i&lt;n;i++)<br><span class="hljs-built_in">cout</span>&lt;&lt;a[i]&lt;&lt;<span class="hljs-string">" "</span>;<br><span class="hljs-built_in">cout</span>&lt;&lt;<span class="hljs-built_in">endl</span>;<br><span class="hljs-keyword">break</span>;<br>&#125;<br>&#125;<span class="hljs-keyword">while</span>(next_permutation(a.begin(),a.end()));<span class="hljs-comment">//产生下一个排列，循环即进行全排列</span><br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>&#125;<br></code></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      
      
        &lt;blockquote&gt;
&lt;p&gt;问题描述&lt;br&gt;　　给定一个1～N的排列a[i]，每次将相邻两个数相加，得到新序列，再对新序列重复这样的操作，显然每次得到的序列都比上一次的序列长度少1，最终只剩一个数字。&lt;br&gt;　　例如:&lt;br&gt;　　3 1 2 4&lt;br&gt;　　4 3 6&lt;br&gt;　
      
    
    </summary>
    
    
      <category term="蓝桥杯" scheme="http://yoursite.com/categories/%E8%93%9D%E6%A1%A5%E6%9D%AF/"/>
    
    
  </entry>
  
</feed>
