-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathatom.xml
More file actions
490 lines (277 loc) · 147 KB
/
atom.xml
File metadata and controls
490 lines (277 loc) · 147 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>ChanCherry'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">
<p>啊啊啊,今天结束了web开发大作业,开发写代码持续了一周,第一次这么认真从头到尾自己写完一个简单的web系统【捂脸】,想着写一写自己的感受吧(呃呃,写的有点乱)。</p>
</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">
<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>
</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<=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"><iostream></span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><algorithm></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>{<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>>>n;<br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i<n;i++)<br><span class="hljs-built_in">cin</span>>>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><span class="hljs-number">1</span>){<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<n<span class="hljs-number">-1</span>;i++)<br>a[i]=a[i+<span class="hljs-number">1</span>];<br>n--; <br>}<br><span class="hljs-built_in">cout</span><<sum<<<span class="hljs-built_in">endl</span>;<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></table></figure>]]></content>
<summary type="html">
<blockquote>
<p>问题描述<br> Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。<br> 给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过程如下:<br> 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<=N<=30, 0<=M<=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"><stdio.h></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>{<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>,&n,&m);<br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i<n;i++){<br><span class="hljs-keyword">for</span>(j=<span class="hljs-number">0</span>;j<n;j++){<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&a[i][j]);<br>b[i][j]=a[i][j];<br>}<br>}<br><span class="hljs-keyword">if</span>(m==<span class="hljs-number">0</span>){<span class="hljs-comment">//矩阵的0次幂为单位矩阵 </span><br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i<n;i++){ <br><span class="hljs-keyword">for</span>(j=<span class="hljs-number">0</span>;j<n;j++){<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>}<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"\n"</span>);<br>}<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<span class="hljs-comment">//要结束程序 </span><br>}<br><span class="hljs-keyword">if</span>(m==<span class="hljs-number">1</span>){<span class="hljs-comment">//矩阵的1次幂为它本身 </span><br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i<n;i++){<br><span class="hljs-keyword">for</span>(j=<span class="hljs-number">0</span>;j<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>}<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<span class="hljs-comment">//要结束程序 </span><br>}<br><br><span class="hljs-keyword">while</span>(m>=<span class="hljs-number">2</span>){<span class="hljs-comment">//矩阵2次幂及以上需要做运算 </span><br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i<n;i++) <br><span class="hljs-keyword">for</span>(j=<span class="hljs-number">0</span>;j<n;j++){<br><span class="hljs-keyword">int</span> k=n;<br><span class="hljs-keyword">while</span>(k){<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>}<br>} <br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i<n;i++)<br><span class="hljs-keyword">for</span>(j=<span class="hljs-number">0</span>;j<n;j++){<br>b[i][j]=t[i][j];<span class="hljs-comment">//将中间计算得到的数组再赋给b[][],便于下一次乘法 </span><br>t[i][j]=<span class="hljs-number">0</span>;<br>}<br>m--;<br>}<br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i<n;i++){<br><span class="hljs-keyword">for</span>(j=<span class="hljs-number">0</span>;j<n;j++){<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d "</span>,b[i][j]);<br>}<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"\n"</span>);<br>} <br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<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">
<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> 第一行是一个正
</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,文件->新建->填写名称(容易辨别就行)和主机(云服务器的公网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">
<p>去年华为云服务器做活动,白嫖了一个弹性云服务器,一直没有用,今天着手来配置一下,不然要过期了。一边配置一边记录流程,亲测有效哦!</p>
</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"><stdio.h></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>{<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>{<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>}<br>}<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<br><span class="hljs-keyword">int</span> n;<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&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>}<br></code></pre></td></tr></table></figure>]]></content>
<summary type="html">
<blockquote>
<p>问题描述<br> FJ在沙盘上写了这样一些字符串:<br> A1 = “A”<br> A2 = “ABA”<br> A3 = “ABACABA”<br> A4 = “ABACABADABACABA”<br> … …<br> 你能找出其
</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 <= 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"><iostream></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>{<br><span class="hljs-keyword">int</span> n;<br><span class="hljs-built_in">cin</span>>>n;<br><span class="hljs-built_in">string</span> s;<br><span class="hljs-built_in">cin</span>>>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<j;i++){<br><span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> k=j;k>=i;k--){<br><span class="hljs-keyword">if</span>(k==i){<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>){<br><span class="hljs-built_in">cout</span><<<span class="hljs-string">"Impossible"</span>;<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br>flag=<span class="hljs-number">1</span>;<br>cnt+=n/<span class="hljs-number">2</span>-i;<br>}<br><span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(s[k]==s[i]){<br><span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> l=k;l<j;l++){<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>}<br>j--;<br><span class="hljs-keyword">break</span>; <br>}<br>}<br>} <br><span class="hljs-built_in">cout</span><<cnt;<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></table></figure>]]></content>
<summary type="html">
<blockquote>
<p>问题描述<br> 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。<br> 交换的定义是:交换两个相邻的字符<br>
</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"><iostream></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"><cstring></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>{<br><span class="hljs-built_in">string</span> s;<br><span class="hljs-built_in">cin</span>>>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>]={<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>};<span class="hljs-comment">//每一位上的数字 </span><br><span class="hljs-built_in">string</span> units[<span class="hljs-number">11</span>]={<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>};<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<n;i++){<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>){<br><span class="hljs-comment">//这里要注意C++ string的长度陷阱 </span><br><span class="hljs-keyword">if</span>(i+<span class="hljs-number">1</span><n && 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><<nums[num]<<<span class="hljs-string">" "</span>;<br>}<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>) && num==<span class="hljs-number">1</span>){<br><span class="hljs-comment">//十、十万、十亿位上有1的时候输出shi,而不是yi shi </span><br><span class="hljs-built_in">cout</span><<units[n-i]<<<span class="hljs-string">" "</span>;<br>}<br><span class="hljs-keyword">else</span>{<br><span class="hljs-built_in">cout</span><<nums[num]<<<span class="hljs-string">" "</span><<units[n-i]<<<span class="hljs-string">" "</span>;<br>}<br>}<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<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">
<blockquote>
<p>问题描述<br> Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿。<br> 比如说,在对学生讲解第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<=100;t<=300;s<=10;l<=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"><stdio.h></span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><string.h></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>{<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>,&v1,&v2,&t,&s,&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 && st[i]!=l){<span class="hljs-comment">//两者都没有到达终点 </span><br><span class="hljs-keyword">if</span>(tot[i]==<span class="hljs-number">0</span>){<br>sr[i]=sr[i<span class="hljs-number">-1</span>]+v1;<br>flag=<span class="hljs-number">0</span>;<br>} <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 && tot[i]!=<span class="hljs-number">1</span>){<span class="hljs-comment">//用flag变量防止兔子休息过程中再次判断是否休息 </span><br><span class="hljs-keyword">if</span>(sr[i]-st[i]>=t){<br>flag=<span class="hljs-number">1</span>; <br><span class="hljs-keyword">for</span>(j=i+<span class="hljs-number">1</span>;j<=i+s;j++){<br>tot[j]=<span class="hljs-number">1</span>;<span class="hljs-comment">//标志兔子休息 </span><br>}<br>}<br>}<br><br><span class="hljs-keyword">if</span>(sr[i]>=l || st[i]>=l)<br><span class="hljs-keyword">break</span>;<br>i++;<br>}<br><br><span class="hljs-keyword">if</span>(sr[i]>st[i]){<span class="hljs-comment">//相同的时间内,看谁的路程远,谁先到 </span><br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"R\n%d\n"</span>,i);<br>}<br><span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(sr[i]<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>}<br></code></pre></td></tr></table></figure><p>可能方法相较于其他的大佬比较繁琐,不过做出来就好了,菜鸡继续学习ing(#^.^#)</p>]]></content>
<summary type="html">
<p>话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。于是世界上各个角落都不断在发生着乌龟和兔子的比赛,小华对此很感兴趣,于是决定研究不同兔子和乌龟的赛跑。</p>
</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"><stdio.h></span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><string.h> </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>{<br><span class="hljs-keyword">int</span> n,i,j;<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&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<=n;i++)<br><span class="hljs-keyword">for</span>(j=<span class="hljs-number">1</span>;j<=n;j++)<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&a[i][j]);<br><br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">1</span>;i<=n;i++){<br><span class="hljs-keyword">for</span>(j=<span class="hljs-number">1</span>;j<=n;j++){<br><span class="hljs-keyword">if</span>(i!=j && a[i][j]==<span class="hljs-number">1</span>)<br>count[j]++;<br>}<br>}<br><span class="hljs-keyword">for</span>(j=<span class="hljs-number">1</span>;j<=n;j++)<br><span class="hljs-keyword">if</span>(count[j]>=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>}<br></code></pre></td></tr></table></figure>]]></content>
<summary type="html">
<blockquote>
<p>问题描述<br> 有n(2≤n≤20)块芯片,有好有坏,已知好芯片比坏芯片多。<br> 每个芯片都能用来测试其他芯片。用好芯片测试其他芯片时,能正确给出被测试芯片是好还是坏。而用坏芯片测试其他芯片时,会随机给出好或是坏的测试结果(即此结果与被测
</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"><stdio.h></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>{<br><span class="hljs-keyword">if</span>(a>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>}<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>{<br><span class="hljs-keyword">if</span>(a<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>}<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<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>,&x1,&y1,&x2,&y2);<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%lf%lf%lf%lf"</span>,&x3,&y3,&x4,&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)<=<span class="hljs-built_in">min</span>(x3,x4) || <span class="hljs-built_in">max</span>(x3,x4)<=<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>{<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>}<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></table></figure>]]></content>
<summary type="html">
<blockquote>
<p>问题描述<br> 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。<br>输入格式<br> 输入仅包含两行,每行描述一个矩形。<br> 在每行中,给出矩形的
</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<=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"><stdio.h></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>{<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>,&n,&m)!=EOF){<br><span class="hljs-keyword">if</span>(n><span class="hljs-number">0</span> && n<=<span class="hljs-number">100</span>){<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<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<n;i++){<br>count++;<br>sum+=a[i];<br><span class="hljs-comment">//每隔m个数计算一次</span><br><span class="hljs-keyword">if</span>(count==m){<br>b[k++]=sum/m;<br>sum=<span class="hljs-number">0</span>;<br>count=<span class="hljs-number">0</span>;<br>}<br>}<br><span class="hljs-keyword">if</span>(n%m!=<span class="hljs-number">0</span>){<br>b[k]=sum/(n%m);<br>k++;<span class="hljs-comment">//保证数组b正常输出</span><br>}<br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i<k<span class="hljs-number">-1</span>;i++){<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d "</span>,b[i]);<br>}<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d\n"</span>,b[k<span class="hljs-number">-1</span>]);<br>}<br>}<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></table></figure>]]></content>
<summary type="html">
<p>Problem Description<br>有一个长度为n(n&lt;=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。</p>
</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<=N<=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("%d",&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"><stdio.h></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>{<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>,&n)!=EOF){<br> <span class="hljs-keyword">if</span>(n<=<span class="hljs-number">1</span>){<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>}<br><span class="hljs-keyword">else</span>{<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<=n;i++){<br>s*=i;<br>}<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%ld\n"</span>,s);<br>}<br>}<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></table></figure>]]></content>
<summary type="html">
<blockquote>
<p>Description<br>筒子想求出若干个数每个数的阶乘,请你帮他吧!<br>Input<br>若干数N(0&lt;=N&lt;=20)<br>Output<br>每个数的阶乘</p>
</blockquote>
</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<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"><stdio.h></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>{<br><span class="hljs-keyword">int</span> i;<br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">1</span>;i<=n;i++){<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> && 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> && i!=n)<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"+"</span>);<br>}<br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i<n;i++)<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">")"</span>);<br>} <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>{<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<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<=n;i++){<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>}<br>}<br><br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<br><span class="hljs-keyword">int</span> n;<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&n);<br>Sn(n);<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></table></figure>]]></content>
<summary type="html">
<blockquote>
<p>问题描述<br> 最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。<br> 不妨设<br> 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>=3,n∈N*)现在给你一个整数n(n>=1),求斐波那契数列中第n项的值.</p><p>Input 一个正整数n(n<=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"><stdio.h></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>{<br> <span class="hljs-keyword">if</span>(n<=<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>}<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<br> <span class="hljs-keyword">int</span> n;<br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&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>}<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"><stdio.h></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>{<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<=n;i++){<br> fn=f0+f1;<br> f0=f1;<br> f1=fn;<br> }<br> <span class="hljs-keyword">return</span> fn;<br>}<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<br> <span class="hljs-keyword">int</span> n;<br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&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>}<br></code></pre></td></tr></table></figure></li></ol><p>欢迎大佬批评指正~~</p>]]></content>
<summary type="html">
<p>前言:<br>编程渣渣报名了蓝桥杯,不得不刷题来求个心理安慰,祈求获奖。同时也会更新一些刷题中遇到的问题blog作为笔记,便于日后复习,希望能做到每天刷题呀!附上我们学校的刷题OJ:<a href="https://oj.ncutea.com/problems" target="_blank" rel="noopener">https://oj.ncutea.com/problems</a></p>
</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<a<b<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"><stdio.h></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>{<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<<span class="hljs-number">55</span>;i++){<br>f[i]=f[i<span class="hljs-number">-1</span>]+f[i<span class="hljs-number">-2</span>];<br>}<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,t);<br><span class="hljs-keyword">while</span>(t--){<br><span class="hljs-keyword">int</span> n,m;<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d%d"</span>,&n,&m);<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%lld\n"</span>,f[m-n]);<br>}<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<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"><stdio.h></span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><math.h></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>{<br><span class="hljs-keyword">int</span> n,a,b;<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&n);<br><span class="hljs-keyword">while</span>(n--){<br><span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d%d"</span>,&a,&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>}<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></table></figure>]]></content>
<summary type="html">
<p>Problem Description<br>有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。</p>
</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<=m<=n<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"><stdio.h></span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span><span class="hljs-meta-string"><stdlib.h></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>{<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>, &n, &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<n;i++){<span class="hljs-comment">//给这组数赋值 </span><br>arr[i]=i+<span class="hljs-number">1</span>;<br>}<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++){<br><span class="hljs-keyword">if</span>(i>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){<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>} <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>} <br><span class="hljs-comment">//找出最后剩余的一位输出来 </span><br><span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i<n;i++){<br><span class="hljs-keyword">if</span>(arr[i]!=<span class="hljs-number">0</span>){<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d"</span>,arr[i]);<br><span class="hljs-keyword">break</span>;<br>}<br>}<br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<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"><stdio.h> </span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span><span class="hljs-meta-string"><stdlib.h> </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>{</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>}<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>{<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->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>, &n, &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<n; ++i)<span class="hljs-comment">//赋初值</span><br>{<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->data = i+<span class="hljs-number">1</span>;<br>s->next = <span class="hljs-literal">NULL</span>;<br>q->next = s;<br>q = s;<br>}<br> <br>q->next = L->next;<span class="hljs-comment">//让尾结点指向头结点的下一个,即第一个人的位置,单向循环链表创建完成</span><br>q = L->next;<span class="hljs-comment">//让q指向头结点的下一个</span><br> <br><span class="hljs-keyword">while</span> (q->next != q)<span class="hljs-comment">//只剩一个元素时,退出循环</span><br>{<br><span class="hljs-keyword">for</span> (i=<span class="hljs-number">1</span>; i<k<span class="hljs-number">-1</span>; ++i)<br>{q = q->next;}<span class="hljs-comment">//q指向删除节点的前一个</span><br>s = q->next;<span class="hljs-comment">//s指向删除节点</span><br>q->next = s->next;<span class="hljs-comment">//将去除s后的链表重新连接起来</span><br>q = q->next;<span class="hljs-comment">//让q指向下次循环的起始位置</span><br><span class="hljs-comment">//printf("%d ", s->data);</span><br><span class="hljs-built_in">free</span>(s);<br>s = <span class="hljs-literal">NULL</span>;<br>}<br> <br><span class="hljs-built_in">printf</span> (<span class="hljs-string">"%d\n"</span>, q->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>}<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"><stdio.h> </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>{ <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>, &n, &k); <br> <span class="hljs-keyword">for</span> (i = <span class="hljs-number">2</span>; i <= n; ++i){ <br> s = (s+k)%i; <br> } <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>}<br></code></pre></td></tr></table></figure>]]></content>
<summary type="html">
<blockquote>
<p>题目描述:</p>
<p>有n个小朋友做游戏,他们的编号分别是1,2,3…n。他们按照编号从小到大依次顺时针围成一个圆圈,第一个小朋友从1开始报数,依次按照顺时针方向报数(报数的值加一),每个报m的人会离开队伍,然后下一个小朋友会继续从1开始报数,直到只剩下一个小朋友为止。</p>
<p>求最后一位小朋友的编号。</p>
</blockquote>
</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"><stdio.h></span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><math.h></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>{<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 >= <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 <= <span class="hljs-number">9999</span>; j++)<br> {<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 < <span class="hljs-number">4</span>; q++ ) <span class="hljs-comment">// 真正价格 倒序存入数组</span><br> {<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> }<br> <br> <br> <span class="hljs-keyword">if</span> (a[<span class="hljs-number">0</span>] != <span class="hljs-number">0</span> && a[<span class="hljs-number">0</span>] != <span class="hljs-number">3</span> && a[<span class="hljs-number">0</span>] != <span class="hljs-number">4</span> && a[<span class="hljs-number">0</span>] != <span class="hljs-number">7</span> && b[<span class="hljs-number">0</span>] != <span class="hljs-number">0</span> && b[<span class="hljs-number">0</span>] != <span class="hljs-number">3</span> && b[<span class="hljs-number">0</span>] != <span class="hljs-number">4</span> && 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> && a[<span class="hljs-number">3</span>] != <span class="hljs-number">3</span> && a[<span class="hljs-number">3</span>] != <span class="hljs-number">4</span> && a[<span class="hljs-number">3</span>] != <span class="hljs-number">7</span> && b[<span class="hljs-number">3</span>] != <span class="hljs-number">0</span> && b[<span class="hljs-number">3</span>] != <span class="hljs-number">3</span> && b[<span class="hljs-number">3</span>] != <span class="hljs-number">4</span> && 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> && b[<span class="hljs-number">1</span>] != <span class="hljs-number">4</span> && b[<span class="hljs-number">1</span>] != <span class="hljs-number">7</span> && b[<span class="hljs-number">2</span>] != <span class="hljs-number">3</span> && b[<span class="hljs-number">2</span>] != <span class="hljs-number">4</span> && 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> && a[<span class="hljs-number">1</span>] != <span class="hljs-number">4</span> && a[<span class="hljs-number">1</span>] != <span class="hljs-number">7</span> && a[<span class="hljs-number">2</span>] != <span class="hljs-number">3</span> && a[<span class="hljs-number">2</span>] != <span class="hljs-number">4</span> && a[<span class="hljs-number">2</span>] != <span class="hljs-number">7</span>)<br> {<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 < <span class="hljs-number">4</span>; w++) <span class="hljs-comment">//倒序前的价格</span><br> {<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> }<br> <br> <span class="hljs-keyword">if</span> ((i - Na) > <span class="hljs-number">800</span> && (Nb - j) > <span class="hljs-number">200</span> && (i - Na) < <span class="hljs-number">900</span> && (Nb - j) < <span class="hljs-number">300</span>)<br> {<br> <span class="hljs-keyword">if</span> ( (i - Na) - (Nb - j) == <span class="hljs-number">558</span> )<br> {<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> }<br> }<br> }<br> }<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>}<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"><stdio.h> </span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span><span class="hljs-meta-string"><math.h> </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>{ <br> <span class="hljs-keyword">int</span> num1[<span class="hljs-number">7</span>]={<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>},num2[<span class="hljs-number">7</span>]={<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>};<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<<span class="hljs-number">7</span>;a++){ <br> <span class="hljs-keyword">for</span>(b=<span class="hljs-number">0</span>;b<<span class="hljs-number">7</span>;b++){ <br> <span class="hljs-keyword">for</span>(c=<span class="hljs-number">0</span>;c<<span class="hljs-number">7</span>;c++){ <br> <span class="hljs-keyword">for</span>(d=<span class="hljs-number">1</span>;d<<span class="hljs-number">7</span>;d++){ <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><span class="hljs-number">200</span>&&diff1<<span class="hljs-number">300</span>){ <br> <span class="hljs-keyword">for</span>(i=<span class="hljs-number">1</span>;i<<span class="hljs-number">7</span>;i++){ <br> <span class="hljs-keyword">for</span>(j=<span class="hljs-number">0</span>;j<<span class="hljs-number">7</span>;j++){ <br> <span class="hljs-keyword">for</span>(k=<span class="hljs-number">0</span>;k<<span class="hljs-number">7</span>;k++){ <br> <span class="hljs-keyword">for</span>(m=<span class="hljs-number">1</span>;m<<span class="hljs-number">7</span>;m++){ <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><span class="hljs-number">800</span>&&diff2<<span class="hljs-number">900</span>&&<span class="hljs-built_in">fabs</span>(diff1-diff2)==<span class="hljs-number">558</span>){ <br> <span class="hljs-keyword">if</span>(p1<p3){ <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> }<span class="hljs-keyword">else</span>{ <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> } <br> <br> } <br> } <br> } <br> } <br> } <br> } <br> } <br> } <br> } <br> } <br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>; <br>}<br></code></pre></td></tr></table></figure><p>莫的感情的搬运机器QAQ</p>]]></content>
<summary type="html">
<p>Description</p>
<p>小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店。<br>其标价都是4位数字(即千元不等)。<br>小李为了标价清晰、方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了(参见图片)。</p>
</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"><stdio.h></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>{<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<<span class="hljs-number">8113</span>;d++){<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> && 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> && mon==<span class="hljs-number">2</span> &&day==<span class="hljs-number">29</span>){<br>mon++;<br>day=<span class="hljs-number">1</span>;<br>}<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> && mon==<span class="hljs-number">2</span> && day==<span class="hljs-number">28</span>){<br>mon++;<br>day=<span class="hljs-number">1</span>;<br>}<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>) && day==<span class="hljs-number">31</span>){<br>mon++;<br>day=<span class="hljs-number">1</span>;<br>}<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>) && day==<span class="hljs-number">30</span>){<br>mon++;<br>day=<span class="hljs-number">1</span>;<br>}<br><span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(mon==<span class="hljs-number">12</span> &&day==<span class="hljs-number">31</span>){<br>year++;<br>mon=<span class="hljs-number">1</span>;day=<span class="hljs-number">1</span>;<br>}<br><span class="hljs-keyword">else</span>{<br>day++;<br>}<br><span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d-%d-%d\n"</span>,year,mon,day);<br>} <br><br><span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></table></figure><p>答案:1799-07-16(一定要注意07!!!)</p>]]></content>
<summary type="html">
<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>
</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<n<=10</p></blockquote><h1 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h1><p>一看 n<=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><algorithm></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"><iostream></span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><vector></span></span><br><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><algorithm></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>{<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>>>n>>sum;<br><span class="hljs-function"><span class="hljs-built_in">vector</span><<span class="hljs-keyword">int</span>> <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<n;i++)<br>a[i]=i+<span class="hljs-number">1</span>;<br><span class="hljs-keyword">do</span>{<br><span class="hljs-built_in">vector</span><<span class="hljs-keyword">int</span>> 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<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<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){<br><span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i=<span class="hljs-number">0</span>;i<n;i++)<br><span class="hljs-built_in">cout</span><<a[i]<<<span class="hljs-string">" "</span>;<br><span class="hljs-built_in">cout</span><<<span class="hljs-built_in">endl</span>;<br><span class="hljs-keyword">break</span>;<br>}<br>}<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>}<br></code></pre></td></tr></table></figure>]]></content>
<summary type="html">
<blockquote>
<p>问题描述<br> 给定一个1~N的排列a[i],每次将相邻两个数相加,得到新序列,再对新序列重复这样的操作,显然每次得到的序列都比上一次的序列长度少1,最终只剩一个数字。<br> 例如:<br> 3 1 2 4<br> 4 3 6<br>
</summary>
<category term="蓝桥杯" scheme="http://yoursite.com/categories/%E8%93%9D%E6%A1%A5%E6%9D%AF/"/>
</entry>
</feed>