-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
3553 lines (1848 loc) · 629 KB
/
index.html
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
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html class="theme-next pisces use-motion" lang="zh-CN">
<head>
<meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2"/>
<meta name="theme-color" content="#222"/>
<link rel="stylesheet" href="/lib/font-awesome/css/font-awesome.min.css?v=4.6.2"/>
<link rel="stylesheet" href="/css/main.css?v=7.0.1"/>
<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png?v=7.0.1">
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png?v=7.0.1">
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png?v=7.0.1">
<link rel="mask-icon" href="/images/logo.svg?v=7.0.1" color="#222">
<script id="hexo.configurations">
var NexT = window.NexT || {};
var CONFIG = {
root: '/',
scheme: 'Pisces',
version: '7.0.1',
sidebar: {"position":"left","display":"post","offset":12,"onmobile":false,"dimmer":false},
back2top: true,
back2top_sidebar: false,
fancybox: false,
fastclick: false,
lazyload: false,
tabs: true,
motion: {"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},
algolia: {
applicationID: '',
apiKey: '',
indexName: '',
hits: {"per_page":10},
labels: {"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}
}
};
</script>
<meta property="og:type" content="website">
<meta property="og:title" content="HouXingYi's blog">
<meta property="og:url" content="http://yoursite.com/index.html">
<meta property="og:site_name" content="HouXingYi's blog">
<meta property="og:locale" content="zh-CN">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="HouXingYi's blog">
<link rel="canonical" href="http://yoursite.com/"/>
<script id="page.configurations">
CONFIG.page = {
sidebar: "",
};
</script>
<title>HouXingYi's blog</title>
<noscript>
<style>
.use-motion .motion-element,
.use-motion .brand,
.use-motion .menu-item,
.sidebar-inner,
.use-motion .post-block,
.use-motion .pagination,
.use-motion .comments,
.use-motion .post-header,
.use-motion .post-body,
.use-motion .collection-title { opacity: initial; }
.use-motion .logo,
.use-motion .site-title,
.use-motion .site-subtitle {
opacity: initial;
top: initial;
}
.use-motion .logo-line-before i { left: initial; }
.use-motion .logo-line-after i { right: initial; }
</style>
</noscript>
</head>
<body itemscope itemtype="http://schema.org/WebPage" lang="zh-CN">
<div class="container sidebar-position-left
page-home">
<div class="headband"></div>
<header id="header" class="header" itemscope itemtype="http://schema.org/WPHeader">
<div class="header-inner"><div class="site-brand-wrapper">
<div class="site-meta">
<div class="custom-logo-site-title">
<a href="/" class="brand" rel="start">
<span class="logo-line-before"><i></i></span>
<span class="site-title">HouXingYi's blog</span>
<span class="logo-line-after"><i></i></span>
</a>
</div>
<p class="site-subtitle">即使跑得再远,也逃不出自己本身</p>
</div>
<div class="site-nav-toggle">
<button aria-label="切换导航栏">
<span class="btn-bar"></span>
<span class="btn-bar"></span>
<span class="btn-bar"></span>
</button>
</div>
</div>
<nav class="site-nav">
<ul id="menu" class="menu">
<li class="menu-item menu-item-home menu-item-active">
<a href="/" rel="section"><i class="menu-item-icon fa fa-fw fa-home"></i> <br/>首页</a>
</li>
<li class="menu-item menu-item-tags">
<a href="/tags/" rel="section"><i class="menu-item-icon fa fa-fw fa-tags"></i> <br/>标签</a>
</li>
<li class="menu-item menu-item-categories">
<a href="/categories/" rel="section"><i class="menu-item-icon fa fa-fw fa-th"></i> <br/>分类</a>
</li>
<li class="menu-item menu-item-archives">
<a href="/archives/" rel="section"><i class="menu-item-icon fa fa-fw fa-archive"></i> <br/>归档</a>
</li>
</ul>
</nav>
</div>
</header>
<main id="main" class="main">
<div class="main-inner">
<div class="content-wrap">
<div id="content" class="content">
<section id="posts" class="posts-expand">
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
<div class="post-block">
<link itemprop="mainEntityOfPage" href="http://yoursite.com/2019/03/25/2019-3-25-MOOC-DS/"/>
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="name" content="HouXingYi"/>
<meta itemprop="description" content=""/>
<meta itemprop="image" content="/images/avatar.png"/>
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="HouXingYi's blog"/>
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a href="/2019/03/25/2019-3-25-MOOC-DS/" class="post-title-link" itemprop="url">数据结构 中国MOOC笔记(ING)</a>
</h1>
<div class="post-meta">
<span class="post-time">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2019-03-25 00:00:00 / 修改时间:18:50:48" itemprop="dateCreated datePublished" datetime="2019-03-25T00:00:00+08:00">2019-03-25</time>
</span>
<span class="post-category">
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/数据结构/" itemprop="url" rel="index"><span itemprop="name">数据结构</span></a></span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h1 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h1><p>参考书: 《数据结构》 陈越主编,《王道数据结构 考研复习指导》</p>
<p>视频课:中国大学MOOC 数据结构 浙江大学</p>
<h1 id="第一周-基本概念"><a href="#第一周-基本概念" class="headerlink" title="第一周 基本概念"></a>第一周 基本概念</h1><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>数据结构的定义与内容,算法的定义与内容,一个实例:最大子列和问题。</p>
<h2 id="什么是数据结构"><a href="#什么是数据结构" class="headerlink" title="什么是数据结构"></a>什么是数据结构</h2><p>TODO</p>
<h2 id="什么是算法"><a href="#什么是算法" class="headerlink" title="什么是算法"></a>什么是算法</h2><p>TODO</p>
<h2 id="应用实例:最大子列和问题"><a href="#应用实例:最大子列和问题" class="headerlink" title="应用实例:最大子列和问题"></a>应用实例:最大子列和问题</h2><p>TODO</p>
<h2 id="编程作业"><a href="#编程作业" class="headerlink" title="编程作业"></a>编程作业</h2><p>第一周的编程作业:</p>
<ol>
<li>最大子列和问题:是本次课最后讲到的4种算法的实验题,属于基本要求,一定要做;</li>
</ol>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">TODO</span><br></pre></td></tr></table></figure>
<ol start="2">
<li>Maximum Subsequence Sum:是2004年浙江大学计算机专业考研复试真题,要求略高,选做。其实也不难,是本次课最后讲到的算法的改造,挑战一下吧~</li>
</ol>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">TODO</span><br></pre></td></tr></table></figure>
<ol start="3">
<li>二分查找:配合课后讨论题给出这道函数填空题,学有余力、并且会C语言编程的你可以尝试一下。你只需要提交一个函数,而不用交如main函数之类的其他函数。不会C语言的话,就研究一下课后关于二分法的讨论题吧~</li>
</ol>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">TODO</span><br></pre></td></tr></table></figure>
<h1 id="第二周-线性结构"><a href="#第二周-线性结构" class="headerlink" title="第二周 线性结构"></a>第二周 线性结构</h1><h2 id="总结-1"><a href="#总结-1" class="headerlink" title="总结"></a>总结</h2><p>线性表,堆栈,队列,一个实例:多项式加法运算</p>
<h2 id="线性表"><a href="#线性表" class="headerlink" title="线性表"></a>线性表</h2><p>定义,顺序储存实现,链式储存实现</p>
<h2 id="堆栈"><a href="#堆栈" class="headerlink" title="堆栈"></a>堆栈</h2><p>定义,堆栈的实现</p>
<h2 id="队列"><a href="#队列" class="headerlink" title="队列"></a>队列</h2><p>定义,队列的实现</p>
<h2 id="应用实例:多项式加法"><a href="#应用实例:多项式加法" class="headerlink" title="应用实例:多项式加法"></a>应用实例:多项式加法</h2><p>TODO</p>
<h2 id="编程作业-1"><a href="#编程作业-1" class="headerlink" title="编程作业"></a>编程作业</h2><p>第二周的编程作业:</p>
<ol>
<li>两个有序链表序列的合并 这是一道C语言函数填空题,训练最基本的链表操作。如果会用C编程的话,一定要做;</li>
</ol>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">TODO</span><br></pre></td></tr></table></figure>
<ol start="2">
<li>一元多项式的乘法与加法运算 在“小白专场”里,我们会详细讨论C语言实现的方法。对于不会C语言而不能做第1题的同学,本题一定要做;</li>
</ol>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">TODO</span><br></pre></td></tr></table></figure>
<ol start="3">
<li>Reversing Linked List 根据某大公司笔试题改编的2014年春季PAT真题,不难,可以尝试;</li>
</ol>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">TODO</span><br></pre></td></tr></table></figure>
<ol start="4">
<li>Pop Sequence 是2013年PAT春季考试真题,考察队堆栈的基本概念的掌握,应可以一试。</li>
</ol>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">TODO</span><br></pre></td></tr></table></figure>
<h1 id="第三周-树(上)"><a href="#第三周-树(上)" class="headerlink" title="第三周 树(上)"></a>第三周 树(上)</h1><h2 id="总结-2"><a href="#总结-2" class="headerlink" title="总结"></a>总结</h2><p>树的定义与表示,二叉树及其存储,二叉树的遍历。</p>
<h2 id="树的定义与表示"><a href="#树的定义与表示" class="headerlink" title="树的定义与表示"></a>树的定义与表示</h2><p>TODO</p>
<h2 id="二叉树及存储结构"><a href="#二叉树及存储结构" class="headerlink" title="二叉树及存储结构"></a>二叉树及存储结构</h2><p>TODO</p>
<h2 id="二叉树的遍历"><a href="#二叉树的遍历" class="headerlink" title="二叉树的遍历"></a>二叉树的遍历</h2><p>TODO</p>
<h2 id="编程作业-2"><a href="#编程作业-2" class="headerlink" title="编程作业"></a>编程作业</h2><p>第三周的编程作业:</p>
<ol>
<li>树的同构 小白专场会做详细讲解,基本要求,一定要做;</li>
</ol>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">TODO</span><br></pre></td></tr></table></figure>
<ol start="2">
<li>List Leaves 训练建树和遍历基本功,一定要做;</li>
</ol>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">TODO</span><br></pre></td></tr></table></figure>
<ol start="3">
<li>Tree Traversals Again 是2014年秋季PAT甲级考试真题,稍微要动下脑筋,想通了其实程序很基础,建议尝试。</li>
</ol>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">TODO</span><br></pre></td></tr></table></figure>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</div>
</article>
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
<div class="post-block">
<link itemprop="mainEntityOfPage" href="http://yoursite.com/2019/02/07/2019-2-7-PAT-testing/"/>
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="name" content="HouXingYi"/>
<meta itemprop="description" content=""/>
<meta itemprop="image" content="/images/avatar.png"/>
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="HouXingYi's blog"/>
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a href="/2019/02/07/2019-2-7-PAT-testing/" class="post-title-link" itemprop="url">PAT乙级官方例题练习</a>
</h1>
<div class="post-meta">
<span class="post-time">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2019-02-07 00:00:00" itemprop="dateCreated datePublished" datetime="2019-02-07T00:00:00+08:00">2019-02-07</time>
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-calendar-check-o"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2019-03-17 12:12:10" itemprop="dateModified" datetime="2019-03-17T12:12:10+08:00">2019-03-17</time>
</span>
<span class="post-category">
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/PAT/" itemprop="url" rel="index"><span itemprop="name">PAT</span></a></span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h2 id="前置条件"><a href="#前置条件" class="headerlink" title="前置条件"></a>前置条件</h2><p>甲级考试的分数分布一般为:20、25、25、30;乙考试的分数分布一般为:15、20、20、20、25。</p>
<p>考试时间:2019年3月2日星期六下午1点30分 (北京时间)。</p>
<p>考试地点:福州大学新区数计学院5号楼。</p>
<p>考试环境:福州大学: 张栋, <a href="mailto:[email protected]" target="_blank" rel="noopener">[email protected]</a><br>Dev C++ 5.10;Code::Blocks 16.01;Java SE Development Kit 9.0.1;Eclipse Oxygen.2 4.7.2;Python解释器(3.6.5);PyCharm Community Edition</p>
<p>PAT练习题列表地址(乙级):<a href="https://pintia.cn/problem-sets/994805260223102976/problems" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems</a></p>
<p>开发工具:Dev-C++ 5.11(尽量与考场接近)</p>
<p>参考用书:《算法笔记》 机械工业出版社</p>
<h2 id="注意"><a href="#注意" class="headerlink" title="注意"></a>注意</h2><ol>
<li>C/C++的主函数必须定义为整型,即“int main()”; 程序正常结束必须返回0,即“return 0;”否则将会得到返回非零错误。</li>
</ol>
<h2 id="1001-害死人不偿命的-3n-1-猜想-(15-分)"><a href="#1001-害死人不偿命的-3n-1-猜想-(15-分)" class="headerlink" title="1001 害死人不偿命的(3n+1)猜想 (15 分)"></a>1001 害死人不偿命的(3n+1)猜想 (15 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805325918486528" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805325918486528</a></p>
<p>分类:简单模拟</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int n, step = 0;</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> </span><br><span class="line"> while (n != 1) {</span><br><span class="line"> if (n % 2 == 0) {</span><br><span class="line"> n = n / 2;</span><br><span class="line"> } else {</span><br><span class="line"> n = ( 3 * n + 1) / 2;</span><br><span class="line"> }</span><br><span class="line"> step++;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> printf("%d", step);</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line"> </span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1002-写出这个数-(20-分)"><a href="#1002-写出这个数-(20-分)" class="headerlink" title="1002 写出这个数 (20 分)"></a>1002 写出这个数 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805324509200384" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805324509200384</a></p>
<p>注意点:保证n小于10^100,超出 int ,long 的范围,故首先考虑字符串。因n不超过10的100次方, 所以sum小于9乘以100, 即sum一定不会大于三位数。strlen的使用。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line">#include<cstring></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int sum = 0;</span><br><span class="line"> char c[110];</span><br><span class="line"> </span><br><span class="line"> scanf("%s", c);</span><br><span class="line"> </span><br><span class="line"> for(int i = 0; i < strlen(c); i++) { </span><br><span class="line"> sum += c[i] - '0'; // 字符转化 </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> char pinyins[10][5] = { "ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};</span><br><span class="line"> </span><br><span class="line"> if ( sum < 10 ) {</span><br><span class="line"> printf("%s", pinyins[sum]);</span><br><span class="line"> } else if ( sum >= 10 && sum < 100 ) {</span><br><span class="line"> printf("%s ", pinyins[sum / 10]);</span><br><span class="line"> printf("%s", pinyins[sum % 10]);</span><br><span class="line"> } else if ( sum >= 100 && sum < 1000 ) {</span><br><span class="line"> printf("%s ", pinyins[sum / 100]);</span><br><span class="line"> printf("%s ", pinyins[sum % 100 / 10]);</span><br><span class="line"> printf("%s", pinyins[sum % 10]);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line"> </span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1003-我要通过!-(20-分)"><a href="#1003-我要通过!-(20-分)" class="headerlink" title="1003 我要通过! (20 分)"></a>1003 我要通过! (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805323154440192" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805323154440192</a></p>
<p>注意点:理解题目,找出规律,设P之前A的数量为a,P与T之间A的数量为b,T之后A的数量为c,可知c = a * b。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line">#include<cstring></span><br><span class="line">#include<vector> </span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">main () { </span><br><span class="line"> int n;</span><br><span class="line"> vector<int> passList;</span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> char c[110];</span><br><span class="line"> scanf("%s", c);</span><br><span class="line"> int len1 = 0, len2 = 0, len3 = 0;</span><br><span class="line"> int isPfind = -1, isTfind = -1, isAfind = -1;</span><br><span class="line"> int cLen = strlen(c);</span><br><span class="line"> int isLetterPass = -1;</span><br><span class="line"> </span><br><span class="line"> for (int j = 0; j < cLen; j++) {</span><br><span class="line"> char temp = c[j];</span><br><span class="line"> if (temp == 'P') {</span><br><span class="line"> isPfind = j;</span><br><span class="line"> } else if (temp == 'T') {</span><br><span class="line"> isTfind = j;</span><br><span class="line"> } else if (temp == 'A') {</span><br><span class="line"> isAfind = 1;</span><br><span class="line"> } else {</span><br><span class="line"> isLetterPass = 1; // 含有其他字母 </span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> bool isPass = false;</span><br><span class="line"> </span><br><span class="line"> if (isTfind != -1 && isPfind != -1 && isAfind != -1 && isLetterPass == -1) {</span><br><span class="line"> len1 = isPfind; // P之前A的数量a</span><br><span class="line"> len2 = isTfind - isPfind - 1; // P与T之间A的数量b</span><br><span class="line"> len3 = cLen - isTfind - 1; // T之后A的数量 c</span><br><span class="line"> if ( len1 * len2 == len3 ) { // c = a * b</span><br><span class="line"> isPass = true;</span><br><span class="line"> }</span><br><span class="line"> } </span><br><span class="line"> </span><br><span class="line"> if (isPass) {</span><br><span class="line"> passList.push_back(1);</span><br><span class="line"> } else {</span><br><span class="line"> passList.push_back(0);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> for (vector<int>::iterator it = passList.begin(); it != passList.end(); it++) {</span><br><span class="line"> int temp = *it;</span><br><span class="line"> if (temp == 1) {</span><br><span class="line"> printf("YES\n");</span><br><span class="line"> } else {</span><br><span class="line"> printf("NO\n");</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line"> </span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1004-成绩排名-(20-分)"><a href="#1004-成绩排名-(20-分)" class="headerlink" title="1004 成绩排名 (20 分)"></a>1004 成绩排名 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805321640296448" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805321640296448</a></p>
<p>注意点:结构体使用,排序算法使用。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<algorithm></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">struct Student{</span><br><span class="line"> char name[12];</span><br><span class="line"> char number[12];</span><br><span class="line"> int score; </span><br><span class="line">};</span><br><span class="line"></span><br><span class="line">bool cmp (Student A, Student B) {</span><br><span class="line"> return A.score > B.score;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">main () { </span><br><span class="line"> </span><br><span class="line"> Student stuList[10000];</span><br><span class="line"> int n;</span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> scanf("%s %s %d", stuList[i].name, stuList[i].number, &stuList[i].score);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> sort(stuList, stuList + n, cmp);</span><br><span class="line"> </span><br><span class="line"> printf("%s %s\n", stuList[0].name, stuList[0].number);</span><br><span class="line"> printf("%s %s", stuList[n - 1].name, stuList[n - 1].number);</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1005-继续-3n-1-猜想-(25-分)"><a href="#1005-继续-3n-1-猜想-(25-分)" class="headerlink" title="1005 继续(3n+1)猜想 (25 分)"></a>1005 继续(3n+1)猜想 (25 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805320306507776" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805320306507776</a></p>
<p>注意点:考查hashTable的思想。专门开一个表用于验证是否出现过,表需要开的足够大(10000),否则会出现部分正确的情况。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line">#include<algorithm></span><br><span class="line"></span><br><span class="line">using namespace std; </span><br><span class="line"></span><br><span class="line">bool cmp (int a, int b) {</span><br><span class="line"> return a > b;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> int k;</span><br><span class="line"> bool compareArr[10000] = { false };</span><br><span class="line"> int numList[10000]; </span><br><span class="line"> bool isPrint = false;</span><br><span class="line"> scanf("%d", &k);</span><br><span class="line"> for (int i = 0; i < k; i++) {</span><br><span class="line"> scanf("%d", &numList[i]);</span><br><span class="line"> int n = numList[i];</span><br><span class="line"> while (n != 1) {</span><br><span class="line"> if (n % 2 == 0) {</span><br><span class="line"> n = n / 2;</span><br><span class="line"> } else {</span><br><span class="line"> n = ( 3 * n + 1) / 2;</span><br><span class="line"> }</span><br><span class="line"> compareArr[n] = true;</span><br><span class="line"> } </span><br><span class="line"> }</span><br><span class="line"> sort(numList, numList + k, cmp);</span><br><span class="line"> for (int j = 0; j < k; j++) {</span><br><span class="line"> if (compareArr[numList[j]] == false) {</span><br><span class="line"> if (!isPrint) {</span><br><span class="line"> printf("%d", numList[j]);</span><br><span class="line"> isPrint = true; </span><br><span class="line"> } else {</span><br><span class="line"> printf(" %d", numList[j]);</span><br><span class="line"> } </span><br><span class="line"> } </span><br><span class="line"> } </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1006-换个格式输出整数-(15-分)"><a href="#1006-换个格式输出整数-(15-分)" class="headerlink" title="1006 换个格式输出整数 (15 分)"></a>1006 换个格式输出整数 (15 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805318855278592" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805318855278592</a></p>
<p>注意点:注意边界条件,比如10,100的情况。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int num;</span><br><span class="line"> </span><br><span class="line"> int Bcount = 0, Scount = 0, Gcount = 0;</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &num);</span><br><span class="line"> </span><br><span class="line"> if (num < 10) {</span><br><span class="line"> Gcount = num;</span><br><span class="line"> } else if ( num >= 10 && num < 100 ) {</span><br><span class="line"> </span><br><span class="line"> Scount = num / 10;</span><br><span class="line"> Gcount = num % 10;</span><br><span class="line"> </span><br><span class="line"> } else if (num >= 100) {</span><br><span class="line"> </span><br><span class="line"> Bcount = num / 100;</span><br><span class="line"> Scount = num % 100 / 10;</span><br><span class="line"> Gcount = num % 10;</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> while (Bcount > 0) {</span><br><span class="line"> printf("B");</span><br><span class="line"> Bcount--;</span><br><span class="line"> }</span><br><span class="line"> while (Scount > 0) {</span><br><span class="line"> printf("S");</span><br><span class="line"> Scount--;</span><br><span class="line"> }</span><br><span class="line"> if (Gcount > 0) {</span><br><span class="line"> for (int i = 0; i < Gcount; i++) {</span><br><span class="line"> printf("%d", i + 1);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1007-素数对猜想-(20-分)"><a href="#1007-素数对猜想-(20-分)" class="headerlink" title="1007 素数对猜想 (20 分)"></a>1007 素数对猜想 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805317546655744" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805317546655744</a></p>
<p>注意点:素数判断,边界条件注意。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<math.h></span><br><span class="line"></span><br><span class="line">bool isPrime (int n) {</span><br><span class="line"> if (n <= 1) {</span><br><span class="line"> return false;</span><br><span class="line"> }</span><br><span class="line"> int sqr = (int)sqrt(1.0 * n);</span><br><span class="line"> for (int i = 2; i <= sqr; i++) {</span><br><span class="line"> if (n % i == 0) {</span><br><span class="line"> return false;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> return true;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int N;</span><br><span class="line"> int primeList[10000];</span><br><span class="line"> int n = 0; // 素数的个数</span><br><span class="line"> int count = 0; </span><br><span class="line"> </span><br><span class="line"> scanf("%d", &N);</span><br><span class="line"> </span><br><span class="line"> for (int i = 1; i <= N; i++) {</span><br><span class="line"> int flag = isPrime(i);</span><br><span class="line"> if (flag) {</span><br><span class="line"> primeList[n] = i;</span><br><span class="line"> if (n > 0) {</span><br><span class="line"> int dis = primeList[n] - primeList[n - 1];</span><br><span class="line"> if (dis == 2) {</span><br><span class="line"> count++;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> n++;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> printf("%d", count);</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1008-数组元素循环右移问题-(20-分)"><a href="#1008-数组元素循环右移问题-(20-分)" class="headerlink" title="1008 数组元素循环右移问题 (20 分)"></a>1008 数组元素循环右移问题 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805316250615808" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805316250615808</a></p>
<p>注意点:计算输入数组与输出数组基于n,m的位置关系。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int n, m;</span><br><span class="line"> int list[110];</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> scanf("%d", &m);</span><br><span class="line"> </span><br><span class="line"> m = m % n; </span><br><span class="line"> </span><br><span class="line"> for(int i = 0; i < n; i++) {</span><br><span class="line"> scanf("%d", &list[i]);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> for (int j = 0; j < n; j++) {</span><br><span class="line"> int index = 0;</span><br><span class="line"> if (j + n - m < n) {</span><br><span class="line"> index = j + n - m;</span><br><span class="line"> } else {</span><br><span class="line"> index = j - m;</span><br><span class="line"> }</span><br><span class="line"> if (j > 0) {</span><br><span class="line"> printf(" %d", list[index]); </span><br><span class="line"> } else {</span><br><span class="line"> printf("%d", list[index]);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> } </span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1009-说反话-(20-分)"><a href="#1009-说反话-(20-分)" class="headerlink" title="1009 说反话 (20 分)"></a>1009 说反话 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805314941992960" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805314941992960</a></p>
<p>注意点:利用stack倒序输出,注意cin与string的用法。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include <iostream></span><br><span class="line">#include <stack></span><br><span class="line">using namespace std;</span><br><span class="line">int main() {</span><br><span class="line"> stack<string> v;</span><br><span class="line"> string s;</span><br><span class="line"> while(cin >> s) {</span><br><span class="line"> v.push(s);</span><br><span class="line"> }</span><br><span class="line"> cout << v.top();</span><br><span class="line"> v.pop();</span><br><span class="line"> while(!v.empty()) {</span><br><span class="line"> cout << " " << v.top();</span><br><span class="line"> v.pop();</span><br><span class="line"> }</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1010-一元多项式求导-(25-分)"><a href="#1010-一元多项式求导-(25-分)" class="headerlink" title="1010 一元多项式求导 (25 分)"></a>1010 一元多项式求导 (25 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805313708867584" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805313708867584</a></p>
<p>注意点:零多项式特殊处理,使用EOF的方式比使用数组存储的方式简洁高效。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int x, n;</span><br><span class="line"> </span><br><span class="line"> bool isZero = true; // 是否是零多项式 </span><br><span class="line"> </span><br><span class="line"> while (scanf("%d%d", &x, &n) != EOF) {</span><br><span class="line"> if (n > 0) { // 次数大于零 </span><br><span class="line"> if (isZero == true) { // 第一项 </span><br><span class="line"> isZero = false;</span><br><span class="line"> printf("%d %d", x * n, n - 1); </span><br><span class="line"> } else {</span><br><span class="line"> printf(" %d %d", x * n, n - 1); </span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if (isZero == true) {</span><br><span class="line"> printf("0 0");</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1011-A-B-和-C-(15-分)"><a href="#1011-A-B-和-C-(15-分)" class="headerlink" title="1011 A+B 和 C (15 分)"></a>1011 A+B 和 C (15 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805312417021952" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805312417021952</a></p>
<p>注意点:注意输入输出与取值范围。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> long long a, b, c;</span><br><span class="line"> int n;</span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> scanf("%lld %lld %lld", &a, &b, &c);</span><br><span class="line"> if (a + b > c) {</span><br><span class="line"> printf("Case #%d: true\n", i + 1);</span><br><span class="line"> } else {</span><br><span class="line"> printf("Case #%d: false\n", i + 1);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> return 0;</span><br><span class="line"></span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1012-数字分类-(20-分)"><a href="#1012-数字分类-(20-分)" class="headerlink" title="1012 数字分类 (20 分)"></a>1012 数字分类 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805311146147840" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805311146147840</a></p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<vector></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int n;</span><br><span class="line"> </span><br><span class="line"> int A1 = 0;</span><br><span class="line"> vector<int> A2List;</span><br><span class="line"> int A3 = 0;</span><br><span class="line"> vector<int> A4List;</span><br><span class="line"> int A5 = 0; </span><br><span class="line"> </span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> </span><br><span class="line"> int tempNum;</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &tempNum);</span><br><span class="line"> </span><br><span class="line"> int remain = tempNum % 5;</span><br><span class="line"> </span><br><span class="line"> if (remain == 0) {</span><br><span class="line"> if (tempNum % 2 == 0) {</span><br><span class="line"> A1 += tempNum;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> if (remain == 1) {</span><br><span class="line"> A2List.push_back(tempNum);</span><br><span class="line"> }</span><br><span class="line"> if (remain == 2) {</span><br><span class="line"> A3++;</span><br><span class="line"> }</span><br><span class="line"> if (remain == 3) {</span><br><span class="line"> A4List.push_back(tempNum);</span><br><span class="line"> }</span><br><span class="line"> if (remain == 4) {</span><br><span class="line"> if (A5) {</span><br><span class="line"> A5 = A5 > tempNum ? A5 : tempNum;</span><br><span class="line"> } else {</span><br><span class="line"> A5 = tempNum;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> // A1</span><br><span class="line"> if (A1 == 0) {</span><br><span class="line"> printf("N");</span><br><span class="line"> } else {</span><br><span class="line"> printf("%d", A1);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> // A2</span><br><span class="line"> if (A2List.size() == 0) {</span><br><span class="line"> printf(" N");</span><br><span class="line"> } else {</span><br><span class="line"> int A2sum = 0;</span><br><span class="line"> for (int j = 0; j < A2List.size(); j++) {</span><br><span class="line"> if (j %2 == 0) {</span><br><span class="line"> A2sum += A2List[j];</span><br><span class="line"> } else {</span><br><span class="line"> A2sum -= A2List[j];</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> printf(" %d", A2sum);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> // A3</span><br><span class="line"> if (A3 == 0) {</span><br><span class="line"> printf(" N");</span><br><span class="line"> } else {</span><br><span class="line"> printf(" %d", A3);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> // A4</span><br><span class="line"> if (A4List.size() == 0) {</span><br><span class="line"> printf(" N");</span><br><span class="line"> } else {</span><br><span class="line"> int A4sum = 0;</span><br><span class="line"> float average;</span><br><span class="line"> for (int k = 0; k < A4List.size(); k++) {</span><br><span class="line"> A4sum += A4List[k];</span><br><span class="line"> }</span><br><span class="line"> printf(" %.1f", A4sum * 1.0 / A4List.size());</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> // A5</span><br><span class="line"> if (A5 == 0) {</span><br><span class="line"> printf(" N");</span><br><span class="line"> } else {</span><br><span class="line"> printf(" %d", A5);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1013-数素数-(20-分)"><a href="#1013-数素数-(20-分)" class="headerlink" title="1013 数素数 (20 分)"></a>1013 数素数 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805309963354112" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805309963354112</a></p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<vector></span><br><span class="line">#include<math.h></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">// 判断是否是素数 </span><br><span class="line">bool isPrime (int n) {</span><br><span class="line"> if (n <= 1) {</span><br><span class="line"> return false;</span><br><span class="line"> }</span><br><span class="line"> int sqr = (int)sqrt(1.0 * n);</span><br><span class="line"> for (int i = 2; i <= sqr; i++) {</span><br><span class="line"> if (n % i == 0) {</span><br><span class="line"> return false;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> return true;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int n, m;</span><br><span class="line"> vector<int> primeList;</span><br><span class="line"> int temp = 2;</span><br><span class="line"> </span><br><span class="line"> scanf("%d %d", &n, &m);</span><br><span class="line"> </span><br><span class="line"> while (1) {</span><br><span class="line"> bool res = isPrime(temp);</span><br><span class="line"> if (res) {</span><br><span class="line"> primeList.push_back(temp);</span><br><span class="line"> }</span><br><span class="line"> temp++;</span><br><span class="line"> if (primeList.size() >= m) {</span><br><span class="line"> break;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> int row = 0;</span><br><span class="line"> for (int j = n - 1; j < m; j++) {</span><br><span class="line"> </span><br><span class="line"> if (row == 0) {</span><br><span class="line"> printf("%d", primeList[j]);</span><br><span class="line"> row++; </span><br><span class="line"> } else if (row > 0 && row < 9) {</span><br><span class="line"> printf(" %d", primeList[j]);</span><br><span class="line"> row++;</span><br><span class="line"> } else if (row == 9) {</span><br><span class="line"> printf(" %d\n", primeList[j]);</span><br><span class="line"> row = 0;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1014-福尔摩斯的约会-(20-分)"><a href="#1014-福尔摩斯的约会-(20-分)" class="headerlink" title="1014 福尔摩斯的约会 (20 分)"></a>1014 福尔摩斯的约会 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805308755394560" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805308755394560</a></p>
<p>注意点:字符串的输入输出,字符范围的边界问题(A-G,A-N,A-Z)。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line">#include<map></span><br><span class="line">#include<string></span><br><span class="line">#include<iostream></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> map<int, string> DAY;</span><br><span class="line"> DAY[1] = "MON";DAY[2] = "TUE";DAY[3] = "WED";DAY[4] = "THU";DAY[5] = "FRI";DAY[6] = "SAT";DAY[7] = "SUN";</span><br><span class="line"> </span><br><span class="line"> string str1, str2, str3, str4;</span><br><span class="line"> </span><br><span class="line"> cin >> str1 >> str2 >> str3 >> str4;</span><br><span class="line"> </span><br><span class="line"> bool isFindDay = false;</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < str1.size(); i++) {</span><br><span class="line"> if (str1[i] == str2[i]) {</span><br><span class="line"> </span><br><span class="line"> if (isFindDay) { // 已找到星期几</span><br><span class="line"> </span><br><span class="line"> if (str1[i] >= 'A' && str1[i] <= 'N') { // A到N(1-14) </span><br><span class="line"> cout << str1[i] - 'A' + 10 << ':';</span><br><span class="line"> break; </span><br><span class="line"> } else if (str1[i] >= '0' && str1[i] <= '9') { // 是数字 </span><br><span class="line"> cout << '0' << str1[i] << ':';</span><br><span class="line"> break;</span><br><span class="line"> } </span><br><span class="line"> </span><br><span class="line"> } else {</span><br><span class="line"> </span><br><span class="line"> if (str1[i] >= 'A' && str1[i] <= 'G') { // A到G(1-7) </span><br><span class="line"> cout << DAY[str1[i] - 'A' + 1] << ' ';// 输出星期几</span><br><span class="line"> isFindDay = true;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> for (int j = 0; j < str3.size(); j++) {</span><br><span class="line"> if (str3[j] == str4[j]) {</span><br><span class="line"> if (str3[j] >= 'a' && str3[j] <= 'z' || str3[j] >= 'A' && str3[j] <= 'Z') { // 英文字母,大小写均可 </span><br><span class="line"> if (j < 10) {</span><br><span class="line"> cout << '0' << j;</span><br><span class="line"> } else {</span><br><span class="line"> cout << j;</span><br><span class="line"> }</span><br><span class="line"> break;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1015-德才论-(25-分)"><a href="#1015-德才论-(25-分)" class="headerlink" title="1015 德才论 (25 分)"></a>1015 德才论 (25 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805307551629312" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805307551629312</a></p>
<p>注意点:主要考察sort中的cmp函数,注意审题,注意边界条件。</p>
<figure class="highlight plain"><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><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<vector></span><br><span class="line">#include<algorithm></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">struct Stu {</span><br><span class="line"> int number; // 学号 </span><br><span class="line"> int moralNum; // 德分 </span><br><span class="line"> int talentNum; // 才分 </span><br><span class="line">};</span><br><span class="line"></span><br><span class="line">bool cmp (Stu a, Stu b) {</span><br><span class="line"> if (a.moralNum + a.talentNum == b.moralNum + b.talentNum) {</span><br><span class="line"> if (a.moralNum == b.moralNum) {</span><br><span class="line"> return a.number < b.number;</span><br><span class="line"> } else {</span><br><span class="line"> return a.moralNum > b.moralNum;</span><br><span class="line"> }</span><br><span class="line"> } else {</span><br><span class="line"> return (a.moralNum + a.talentNum) > (b.moralNum + b.talentNum); </span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">void printAll (vector<Stu> list) {</span><br><span class="line"> for (int i = 0; i < list.size(); i++) {</span><br><span class="line"> printf("%d %d %d\n", list[i].number, list[i].moralNum, list[i].talentNum);</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int N, // 考生总数 </span><br><span class="line"> L, // 录取最低分数线 </span><br><span class="line"> H; // 优先录取线 </span><br><span class="line"> </span><br><span class="line"> scanf("%d %d %d", &N, &L, &H);</span><br><span class="line"> </span><br><span class="line"> vector<Stu> group1; // 才德全尽 </span><br><span class="line"> vector<Stu> group2; // 德胜才 </span><br><span class="line"> vector<Stu> group3; // 才德兼亡 </span><br><span class="line"> vector<Stu> group4; // 德胜才 </span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < N; i++) {</span><br><span class="line"> </span><br><span class="line"> int number, moralNum, talentNum;</span><br><span class="line"> Stu tempStu;</span><br><span class="line"> </span><br><span class="line"> scanf("%d %d %d", &number, &moralNum, &talentNum);</span><br><span class="line"> </span><br><span class="line"> tempStu.number = number;</span><br><span class="line"> tempStu.moralNum = moralNum;</span><br><span class="line"> tempStu.talentNum = talentNum;</span><br><span class="line"> </span><br><span class="line"> if (tempStu.moralNum >= L && tempStu.talentNum >= L) {</span><br><span class="line"> </span><br><span class="line"> if (tempStu.moralNum >= H && tempStu.talentNum >= H) {// 才德全尽</span><br><span class="line"> group1.push_back(tempStu);</span><br><span class="line"> } else if (tempStu.moralNum >= H && tempStu.talentNum < H) {// 德胜才</span><br><span class="line"> group2.push_back(tempStu);</span><br><span class="line"> } else if (tempStu.moralNum < H && tempStu.talentNum < H && tempStu.moralNum >= tempStu.talentNum) {// 才德兼亡,但德胜才 </span><br><span class="line"> group3.push_back(tempStu);</span><br><span class="line"> } else {// // 才德兼亡,但才胜德</span><br><span class="line"> group4.push_back(tempStu);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> sort(group1.begin(), group1.end(), cmp);</span><br><span class="line"> sort(group2.begin(), group2.end(), cmp);</span><br><span class="line"> sort(group3.begin(), group3.end(), cmp);</span><br><span class="line"> sort(group4.begin(), group4.end(), cmp);</span><br><span class="line"> </span><br><span class="line"> printf("%d\n", group1.size() + group2.size() + group3.size() + group4.size());</span><br><span class="line"> </span><br><span class="line"> printAll(group1);</span><br><span class="line"> printAll(group2);</span><br><span class="line"> printAll(group3);</span><br><span class="line"> printAll(group4);</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1016-部分A-B-(15-分)"><a href="#1016-部分A-B-(15-分)" class="headerlink" title="1016 部分A+B (15 分)"></a>1016 部分A+B (15 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805306310115328" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805306310115328</a></p>
<p>注意点:考察字符与数字的转化。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line">#include<string></span><br><span class="line">#include<iostream></span><br><span class="line">#include<math.h></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">long long getP (string A, char Da) {</span><br><span class="line"> </span><br><span class="line"> long long p = 0;</span><br><span class="line"> int count = 0;</span><br><span class="line"> int tempNum = Da - '0';</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < A.size(); i++) {</span><br><span class="line"> if (A[i] == Da) {</span><br><span class="line"> count++;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> for (int j = 0; j < count; j++) {</span><br><span class="line"> p += tempNum * pow(10, j);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return p;</span><br><span class="line">} </span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> string A, B;</span><br><span class="line"> char Da, Db;</span><br><span class="line"> long long Asum, Bsum;</span><br><span class="line"> </span><br><span class="line"> cin >> A >> Da >> B >> Db;</span><br><span class="line"> </span><br><span class="line"> Asum = getP(A, Da);</span><br><span class="line"> Bsum = getP(B, Db);</span><br><span class="line"> </span><br><span class="line"> printf("%lld", Asum + Bsum);</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1017-A除以B-(20-分)"><a href="#1017-A除以B-(20-分)" class="headerlink" title="1017 A除以B (20 分)"></a>1017 A除以B (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805305181847552" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805305181847552</a></p>
<p>注意点:考察大整数运算,需掌握大整数的加减乘除。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<cstring></span><br><span class="line">#include<string></span><br><span class="line">#include<iostream></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">// 大整数结构 </span><br><span class="line">struct bign {</span><br><span class="line"> int n[1010];</span><br><span class="line"> int len;</span><br><span class="line"> bign () {</span><br><span class="line"> memset(n, 0, sizeof(n));</span><br><span class="line"> len = 0;</span><br><span class="line"> }</span><br><span class="line">};</span><br><span class="line"></span><br><span class="line">// 将整数转化为大整数</span><br><span class="line"></span><br><span class="line">bign convert (string n) {</span><br><span class="line"> bign a;</span><br><span class="line"> a.len = n.size();</span><br><span class="line"> for (int i = 0; i < a.len; i++) {</span><br><span class="line"> a.n[i] = n[a.len - 1 - i] - '0'; // 转化为int,并倒序摆放。 </span><br><span class="line"> }</span><br><span class="line"> return a;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">// 大整数除法</span><br><span class="line"></span><br><span class="line">bign divide (bign a, int b, int& r) {</span><br><span class="line"> bign c;</span><br><span class="line"> c.len = a.len;</span><br><span class="line"> // 做除法,结果保留在c </span><br><span class="line"> for (int i = a.len -1; i >= 0; i--) {</span><br><span class="line"> r = r*10 + a.n[i];</span><br><span class="line"> if (r < b) { // 不够除 </span><br><span class="line"> c.n[i] = 0;</span><br><span class="line"> } else {</span><br><span class="line"> c.n[i] = r / b;</span><br><span class="line"> r = r % b;</span><br><span class="line"> }</span><br><span class="line"> } </span><br><span class="line"> // 处理c,去除高位的0,同时至少保留一位最低位 </span><br><span class="line"> while (c.len - 1 >= 1 && c.n[c.len - 1] == 0) {</span><br><span class="line"> c.len--;</span><br><span class="line"> }</span><br><span class="line"> return c;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">// 打印大整数 </span><br><span class="line">void printBign(bign a) {</span><br><span class="line"> for (int i = a.len -1; i >= 0; i--) {</span><br><span class="line"> printf("%d", a.n[i]);</span><br><span class="line"> }</span><br><span class="line">} </span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int b, r = 0; // 被除数,余数</span><br><span class="line"> string number;</span><br><span class="line"> bign c; // 商 </span><br><span class="line"> </span><br><span class="line"> cin >> number >> b;</span><br><span class="line"> </span><br><span class="line"> bign bigNumber = convert(number);</span><br><span class="line"> c = divide(bigNumber, b, r);</span><br><span class="line"> printBign(c); // 打印商 </span><br><span class="line"> printf(" %d", r); // 打印余数 </span><br><span class="line"></span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1018-锤子剪刀布-(20-分)"><a href="#1018-锤子剪刀布-(20-分)" class="headerlink" title="1018 锤子剪刀布 (20 分)"></a>1018 锤子剪刀布 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805304020025344" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805304020025344</a></p>
<p>注意点:注意最后一个条件,“如果解不唯一,则输出按字母序最小的解”,即当获胜次数最多的手势相同的时候的策略,影响到数据的摆放。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<iostream></span><br><span class="line"></span><br><span class="line">using namespace std; </span><br><span class="line"></span><br><span class="line">void compare (char a, char b, int aRes[], int bRes[], int aResCount[], int bResCount[]) {</span><br><span class="line"> </span><br><span class="line"> // 胜、平、负</span><br><span class="line"> // J,C,B</span><br><span class="line"> </span><br><span class="line"> // 平局 </span><br><span class="line"> if (a == b) {</span><br><span class="line"> aRes[1]++;</span><br><span class="line"> bRes[1]++;</span><br><span class="line"> } </span><br><span class="line"> </span><br><span class="line"> // 甲C胜 </span><br><span class="line"> if (a == 'C' && b == 'J') {</span><br><span class="line"> aRes[0]++;</span><br><span class="line"> bRes[2]++;</span><br><span class="line"> aResCount[1]++;</span><br><span class="line"> }</span><br><span class="line"> // 乙B胜</span><br><span class="line"> if (a == 'C' && b == 'B') {</span><br><span class="line"> aRes[2]++;</span><br><span class="line"> bRes[0]++;</span><br><span class="line"> bResCount[2]++;</span><br><span class="line"> }</span><br><span class="line"> // 乙C胜 </span><br><span class="line"> if (a == 'J' && b == 'C') {</span><br><span class="line"> aRes[2]++;</span><br><span class="line"> bRes[0]++;</span><br><span class="line"> bResCount[1]++;</span><br><span class="line"> }</span><br><span class="line"> // 甲J胜</span><br><span class="line"> if (a == 'J' && b == 'B') {</span><br><span class="line"> aRes[0]++;</span><br><span class="line"> bRes[2]++;</span><br><span class="line"> aResCount[0]++;</span><br><span class="line"> }</span><br><span class="line"> // 乙J胜</span><br><span class="line"> if (a == 'B' && b == 'J') {</span><br><span class="line"> aRes[2]++;</span><br><span class="line"> bRes[0]++;</span><br><span class="line"> bResCount[0]++;</span><br><span class="line"> }</span><br><span class="line"> // 甲B胜 </span><br><span class="line"> if (a == 'B' && b == 'C') {</span><br><span class="line"> aRes[0]++;</span><br><span class="line"> bRes[2]++;</span><br><span class="line"> aResCount[2]++;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">void printBest (int a[], bool flag) {</span><br><span class="line"> </span><br><span class="line"> int count = 0;</span><br><span class="line"> int temp = 0;</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < 3; i++) {</span><br><span class="line"> </span><br><span class="line"> if (a[i] >= temp) { // 注意,若相同的情况需要按字典顺序优先,即为BCJ顺序,故要">=" </span><br><span class="line"> count = i;</span><br><span class="line"> temp = a[i];</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if (count == 0) {</span><br><span class="line"> if (flag) {</span><br><span class="line"> printf("J"); </span><br><span class="line"> } else {</span><br><span class="line"> printf(" J");</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> if (count == 1) {</span><br><span class="line"> if (flag) {</span><br><span class="line"> printf("C"); </span><br><span class="line"> } else {</span><br><span class="line"> printf(" C");</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> if (count == 2) {</span><br><span class="line"> if (flag) {</span><br><span class="line"> printf("B"); </span><br><span class="line"> } else {</span><br><span class="line"> printf(" B");</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int n;</span><br><span class="line"> </span><br><span class="line"> char a, b;</span><br><span class="line"> </span><br><span class="line"> // 结果记录 </span><br><span class="line"> int aRes[3] = {0, 0, 0};</span><br><span class="line"> int bRes[3] = {0, 0, 0};</span><br><span class="line"> </span><br><span class="line"> // 获胜次数手势 </span><br><span class="line"> int aResCount[3] = {0, 0, 0};</span><br><span class="line"> int bResCount[3] = {0, 0, 0};</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> </span><br><span class="line"> getchar();</span><br><span class="line"> </span><br><span class="line"> scanf("%c %c", &a, &b);</span><br><span class="line"> </span><br><span class="line"> compare(a, b, aRes, bRes, aResCount, bResCount);</span><br><span class="line"> </span><br><span class="line"> } </span><br><span class="line"> </span><br><span class="line"> printf("%d %d %d\n", aRes[0], aRes[1], aRes[2]); </span><br><span class="line"> printf("%d %d %d\n", bRes[0], bRes[1], bRes[2]);</span><br><span class="line"> </span><br><span class="line"> printBest(aResCount, true);</span><br><span class="line"> printBest(bResCount, false);</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1019-数字黑洞-(20-分)"><a href="#1019-数字黑洞-(20-分)" class="headerlink" title="1019 数字黑洞 (20 分)"></a>1019 数字黑洞 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805302786899968" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805302786899968</a></p>
<p>注意点:主要在于数字与数字的数组的相互转化,注意printf技巧的使用。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<algorithm></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">bool cmp (int a, int b) {</span><br><span class="line"> return a > b;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">void to_array (int n, int num[]) {</span><br><span class="line"> for (int i = 0; i < 4; i++) {</span><br><span class="line"> num[i] = n % 10;</span><br><span class="line"> n = n / 10;</span><br><span class="line"> }</span><br><span class="line">} </span><br><span class="line"></span><br><span class="line">int to_number (int num[]) { </span><br><span class="line"> int n = 0;</span><br><span class="line"> for (int i = 0; i < 4; i++) {</span><br><span class="line"> n = n * 10 + num[i];</span><br><span class="line"> }</span><br><span class="line"> return n;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> int n;</span><br><span class="line"> int MAX, MIN;</span><br><span class="line"> int num[4];</span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> while (1) {</span><br><span class="line"> to_array(n, num);</span><br><span class="line"> sort(num, num + 4, cmp);</span><br><span class="line"> MAX = to_number(num);</span><br><span class="line"> sort(num, num + 4);</span><br><span class="line"> MIN = to_number(num);</span><br><span class="line"> n = MAX - MIN;</span><br><span class="line"> printf("%04d - %04d = %04d\n", MAX, MIN, n);</span><br><span class="line"> if (n == 6174 || n == 0) {</span><br><span class="line"> break;</span><br><span class="line"> } </span><br><span class="line"> } </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1020-月饼-(25-分)"><a href="#1020-月饼-(25-分)" class="headerlink" title="1020 月饼 (25 分)"></a>1020 月饼 (25 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805301562163200" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805301562163200</a></p>
<p>注意点:理解题意,策略为首先卖出单价最高的,最高的卖完了再依次补充。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<algorithm></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">struct Mooncake { </span><br><span class="line"> double store; // 库存</span><br><span class="line"> double totalSell; // 总售价</span><br><span class="line"> double price; // 库存</span><br><span class="line">};</span><br><span class="line"></span><br><span class="line">bool cmp (Mooncake a, Mooncake b) {</span><br><span class="line"> return a.price > b.price;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int n; // 月饼种类数</span><br><span class="line"> </span><br><span class="line"> double D; // 市场最大需求量</span><br><span class="line"> </span><br><span class="line"> scanf("%d %lf", &n, &D);</span><br><span class="line"> </span><br><span class="line"> Mooncake cakeList[1010];</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> scanf("%lf", &cakeList[i].store);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> scanf("%lf", &cakeList[i].totalSell);</span><br><span class="line"> cakeList[i].price = cakeList[i].totalSell / cakeList[i].store;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> sort(cakeList, cakeList + n, cmp); // 从大到小排列,先买大的 </span><br><span class="line"> </span><br><span class="line"> double allIncome = 0;</span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> </span><br><span class="line"> if (cakeList[i].store < D) {</span><br><span class="line"> D = D - cakeList[i].store; // 当前全部卖掉</span><br><span class="line"> allIncome = allIncome + cakeList[i].totalSell; </span><br><span class="line"> } else {</span><br><span class="line"> allIncome = allIncome + cakeList[i].price * D;</span><br><span class="line"> break;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> printf("%.2lf", allIncome);</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1021-个位数统计-(15-分)"><a href="#1021-个位数统计-(15-分)" class="headerlink" title="1021 个位数统计 (15 分)"></a>1021 个位数统计 (15 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805300404535296" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805300404535296</a></p>
<p>注意点:需要用大整数方式处理数据。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<cstring></span><br><span class="line">#include<string></span><br><span class="line">#include<iostream></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">struct bign {</span><br><span class="line"> int n[1010];</span><br><span class="line"> int len;</span><br><span class="line"> bign () {</span><br><span class="line"> memset(n, 0, sizeof(n));</span><br><span class="line"> len = 0;</span><br><span class="line"> }</span><br><span class="line">};</span><br><span class="line"></span><br><span class="line">bign change (string str) {</span><br><span class="line"> bign a;</span><br><span class="line"> a.len = str.size();</span><br><span class="line"> for (int i = 0; i < a.len; i++) {</span><br><span class="line"> a.n[i] = str[i] - '0';</span><br><span class="line"> }</span><br><span class="line"> return a;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> string str;</span><br><span class="line"> int countList[10];</span><br><span class="line"> memset(countList, 0, sizeof(countList)); </span><br><span class="line"> cin >> str;</span><br><span class="line"> bign num = change(str);</span><br><span class="line"> for (int i = 0; i < num.len; i++) {</span><br><span class="line"> countList[num.n[i]]++;</span><br><span class="line"> }</span><br><span class="line"> for (int i = 0; i < 10; i++) {</span><br><span class="line"> if (countList[i] > 0) {</span><br><span class="line"> printf("%d:%d\n", i, countList[i]);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> return 0; </span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1022-D进制的A-B-(20-分)"><a href="#1022-D进制的A-B-(20-分)" class="headerlink" title="1022 D进制的A+B (20 分)"></a>1022 D进制的A+B (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805299301433344" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805299301433344</a></p>
<p>注意点:进制转换的问题,需要掌握P进制转化为10进制,与10进制转化为P进制,其他可以以十进制作为中介。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int A, B, D;</span><br><span class="line"> scanf("%d %d %d", &A, &B, &D);</span><br><span class="line"> int sum = A + B;</span><br><span class="line"> int ans[100], len = 0;</span><br><span class="line"> while (1) {</span><br><span class="line"> ans[len++] = sum % D; // 取余</span><br><span class="line"> sum = sum / D; // 除基</span><br><span class="line"> if (sum == 0) {</span><br><span class="line"> break;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> for (int i = len -1; i >= 0; i--) {</span><br><span class="line"> printf("%d", ans[i]);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1023-组个最小数-(20-分)"><a href="#1023-组个最小数-(20-分)" class="headerlink" title="1023 组个最小数 (20 分)"></a>1023 组个最小数 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805298269634560" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805298269634560</a></p>
<p>注意点:策略为最高位打印除0以外最小的,其余的顺序从小到大按数量打印。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> int list[10];</span><br><span class="line"> for (int i = 0; i < 10; i++) {</span><br><span class="line"> scanf("%d", &list[i]);</span><br><span class="line"> }</span><br><span class="line"> for (int i = 1; i < 10; i++) {</span><br><span class="line"> if (list[i] > 0) {</span><br><span class="line"> printf("%d", i);</span><br><span class="line"> list[i]--;</span><br><span class="line"> break;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> int pos = 0;</span><br><span class="line"> while (1) {</span><br><span class="line"> if (list[pos] > 0 && pos < 10) {</span><br><span class="line"> printf("%d", pos);</span><br><span class="line"> list[pos]--;</span><br><span class="line"> } else {</span><br><span class="line"> pos++;</span><br><span class="line"> }</span><br><span class="line"> if (pos >= 10) {</span><br><span class="line"> break;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1024-科学计数法-(20-分)"><a href="#1024-科学计数法-(20-分)" class="headerlink" title="1024 科学计数法 (20 分)"></a>1024 科学计数法 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805297229447168" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805297229447168</a></p>
<p>注意点:以处理字符串作为思路。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<iostream></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> string str;</span><br><span class="line"> cin >> str;</span><br><span class="line"> int len = str.size(); </span><br><span class="line"> int Epos; // E的位置</span><br><span class="line"> int exp = 0; // 指数</span><br><span class="line"> if (str[0] == '-') {</span><br><span class="line"> printf("-");</span><br><span class="line"> }</span><br><span class="line"> // 找出E的位置 </span><br><span class="line"> for (int i = 0; i < len; i++) {</span><br><span class="line"> if (str[i] == 'E') {</span><br><span class="line"> Epos = i;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> // 计算指数</span><br><span class="line"> for (int i = Epos + 2; i < len; i++) {</span><br><span class="line"> exp = exp * 10 + (str[i] - '0'); </span><br><span class="line"> }</span><br><span class="line"> // 指数为0特判 </span><br><span class="line"> if (exp == 0) {</span><br><span class="line"> for (int i = 1; i < Epos; i++) {</span><br><span class="line"> printf("%d", str[i]);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> if (str[Epos + 1] == '-') { // 指数为负 </span><br><span class="line"> printf("0.");</span><br><span class="line"> for(int i = 0; i < exp - 1; i++) {</span><br><span class="line"> printf("0");</span><br><span class="line"> }</span><br><span class="line"> for(int i = 1;i < Epos; i++) {</span><br><span class="line"> if (str[i] == '.') continue;</span><br><span class="line"> printf("%c", str[i]);</span><br><span class="line"> }</span><br><span class="line"> } else { // 指数为正 </span><br><span class="line"> for (int i = 1; i < Epos; i++) {</span><br><span class="line"> if (str[i] == '.') continue;</span><br><span class="line"> printf("%c", str[i]);</span><br><span class="line"> if (i == exp + 2 && exp + 3 != Epos) {</span><br><span class="line"> printf(".");</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> // 需补零 </span><br><span class="line"> if (exp + 3 > Epos) {</span><br><span class="line"> for (int i = 0; i < exp + 3 - Epos; i++) {</span><br><span class="line"> printf("0");</span><br><span class="line"> } </span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1025-反转链表-(25-分)"><a href="#1025-反转链表-(25-分)" class="headerlink" title="1025 反转链表 (25 分)***"></a>1025 反转链表 (25 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805296180871168" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805296180871168</a></p>
<p>注意点:根据《算法笔记》里的代码,没通过,直接超时了。后面再想办法。改用柳婼的。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include <iostream></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">int main() {</span><br><span class="line"> </span><br><span class="line"> int first, k, n, sum = 0;</span><br><span class="line"> </span><br><span class="line"> cin >> first >> n >> k; // 第一个结点地址,结点个数,结点反转周期 </span><br><span class="line"> </span><br><span class="line"> int temp, data[100005], next[100005], list[100005], result[100005];</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> cin >> temp;</span><br><span class="line"> cin >> data[temp] >> next[temp];</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> while (first != -1) {</span><br><span class="line"> list[sum++] = first;</span><br><span class="line"> first = next[first];</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < sum; i++) {</span><br><span class="line"> result[i] = list[i];</span><br><span class="line"> }</span><br><span class="line"> for (int i = 0; i < (sum - sum % k); i++) { // 余下的不反转 </span><br><span class="line"> result[i] = list[i / k * k + k - 1 - i % k]; // 按周期反转 </span><br><span class="line"> }</span><br><span class="line"> for (int i = 0; i < sum - 1; i++) {</span><br><span class="line"> printf("%05d %d %05d\n", result[i], data[result[i]], result[i + 1]);</span><br><span class="line"> }</span><br><span class="line"> printf("%05d %d -1", result[sum - 1], data[result[sum - 1]]);</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1026-程序运行时间-(15-分)"><a href="#1026-程序运行时间-(15-分)" class="headerlink" title="1026 程序运行时间 (15 分)"></a>1026 程序运行时间 (15 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805295203598336" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805295203598336</a></p>
<p>注意点:注意四舍五入。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<math.h></span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> int C1, C2;</span><br><span class="line"> scanf("%d %d", &C1, &C2);</span><br><span class="line"> int time = (int)round((C2 - C1) / 100.0);</span><br><span class="line"> int hh, mm, ss;</span><br><span class="line"> int r;</span><br><span class="line"> hh = time / 3600;</span><br><span class="line"> r = time % 3600;</span><br><span class="line"> mm = r / 60;</span><br><span class="line"> ss = r % 60;</span><br><span class="line"> printf("%02d:%02d:%02d", hh, mm, ss);</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1027-打印沙漏-(20-分)"><a href="#1027-打印沙漏-(20-分)" class="headerlink" title="1027 打印沙漏 (20 分)"></a>1027 打印沙漏 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805294251491328" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805294251491328</a></p>
<p>注意点:***注意格式问题,沙漏后面的空格不要打印,十分坑。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line"></span><br><span class="line">int main () {</span><br><span class="line"> int n, prev = 0, i = 0, res;</span><br><span class="line"> </span><br><span class="line"> char tempStr;</span><br><span class="line"> </span><br><span class="line"> scanf("%d %c", &n, &tempStr);</span><br><span class="line"> </span><br><span class="line"> while (1) {</span><br><span class="line"> int now;</span><br><span class="line"> if (i == 0) {</span><br><span class="line"> now = 1;</span><br><span class="line"> } else {</span><br><span class="line"> now = prev + 2 * ( 2 * i + 1 );</span><br><span class="line"> }</span><br><span class="line"> if (now > n) {</span><br><span class="line"> res = n - prev;</span><br><span class="line"> break;</span><br><span class="line"> } else {</span><br><span class="line"> prev = now;</span><br><span class="line"> i++; </span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> i = i - 1;</span><br><span class="line"> </span><br><span class="line"> int countLine = 0; </span><br><span class="line"> for (int k = 0; k < 2 * i + 1; k++) {</span><br><span class="line"> int r = k < (2 * i + 1) / 2 ? k : 2 * i - k; // 当前行数打印空白的对半数量</span><br><span class="line"> for (int j = 0; j < r; j++) {</span><br><span class="line"> countLine++;</span><br><span class="line"> printf(" ");</span><br><span class="line"> }</span><br><span class="line"> for (int j = 0; j < (2 * i + 1) - (2 * r); j++) {</span><br><span class="line"> countLine++;</span><br><span class="line"> printf("%c", tempStr);</span><br><span class="line"> }</span><br><span class="line"> countLine = 0;</span><br><span class="line"> printf("\n");</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> printf("%d", res);</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1028-人口普查-(20-分)"><a href="#1028-人口普查-(20-分)" class="headerlink" title="1028 人口普查 (20 分)"></a>1028 人口普查 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805293282607104" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805293282607104</a></p>
<p>注意点:关注下这个读取数据的方式。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">struct Birth {</span><br><span class="line"> </span><br><span class="line"> char name[6];</span><br><span class="line"> int year;</span><br><span class="line"> int month;</span><br><span class="line"> int day;</span><br><span class="line"> </span><br><span class="line">};</span><br><span class="line"></span><br><span class="line">bool isValid (Birth a) {</span><br><span class="line"> if (a.year < 1814 || ( a.year == 1814 && a.month < 9) || ( a.year == 1814 && a.month == 9 && a.day < 6) ) {</span><br><span class="line"> return false;</span><br><span class="line"> }</span><br><span class="line"> if (a.year > 2014 || ( a.year == 2014 && a.month > 9 ) || ( a.year == 2014 && a.month == 9 && a.day > 6)) {</span><br><span class="line"> return false;</span><br><span class="line"> }</span><br><span class="line"> return true;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int n;</span><br><span class="line"> </span><br><span class="line"> Birth MIN, MAX;</span><br><span class="line"> int count = 0;</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> </span><br><span class="line"> Birth list[n];</span><br><span class="line"> </span><br><span class="line"> MAX.year = 2014;MAX.month = 9;MAX.day = 6;</span><br><span class="line"> MIN.year = 1814;MIN.month = 9;MIN.day = 6;</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> </span><br><span class="line"> scanf("%s %d/%d/%d", list[i].name, &list[i].year, &list[i].month, &list[i].day);</span><br><span class="line"> </span><br><span class="line"> bool valid = isValid(list[i]);</span><br><span class="line"> if (valid) {</span><br><span class="line"> count++;</span><br><span class="line"> if ( (list[i].year > MIN.year) || (list[i].year == MIN.year && list[i].month > MIN.month) || (list[i].year == MIN.year && list[i].month == MIN.month && list[i].day > MIN.day) ) {</span><br><span class="line"> MIN = list[i];</span><br><span class="line"> }</span><br><span class="line"> if ( (list[i].year < MAX.year) || (list[i].year == MAX.year && list[i].month < MAX.month) || (list[i].year == MAX.year && list[i].month == MAX.month && list[i].day < MAX.day) ) {</span><br><span class="line"> MAX = list[i];</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> if (count > 0) {</span><br><span class="line"> printf("%d %s %s", count, MAX.name, MIN.name);</span><br><span class="line"> } else {</span><br><span class="line"> printf("0");</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1029-旧键盘-(20-分)"><a href="#1029-旧键盘-(20-分)" class="headerlink" title="1029 旧键盘 (20 分)"></a>1029 旧键盘 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805292322111488" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805292322111488</a></p>
<p>注意点:字符串处理。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line">#include<string></span><br><span class="line">#include<iostream></span><br><span class="line">#include<vector></span><br><span class="line"></span><br><span class="line">using namespace std; </span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> string str1, str2;</span><br><span class="line"> vector<char> list;</span><br><span class="line"> cin >> str1 >> str2;</span><br><span class="line"> int offset = 0;</span><br><span class="line"> for (int i = 0; i < str1.size(); i++) {</span><br><span class="line"> if (str1[i] != str2[i - offset]) {</span><br><span class="line"> offset++;</span><br><span class="line"> }</span><br><span class="line"> if (i - offset < 0 && i == 0) { // 第0个特判 </span><br><span class="line"> if (str1[i] >= 'a' && str1[i] <= 'z') {</span><br><span class="line"> str1[i] = str1[i] - 32; // 转化为大写 </span><br><span class="line"> }</span><br><span class="line"> list.push_back(str1[i]);</span><br><span class="line"> } else {</span><br><span class="line"> if (str1[i] != str2[i - offset]) {</span><br><span class="line"> if (str1[i] >= 'a' && str1[i] <= 'z') {</span><br><span class="line"> str1[i] = str1[i] - 32; // 转化为大写 </span><br><span class="line"> }</span><br><span class="line"> int isRepeat = false;</span><br><span class="line"> for(int j = 0; j < list.size(); j++) {</span><br><span class="line"> if (str1[i] == list[j]) {</span><br><span class="line"> isRepeat = true;</span><br><span class="line"> } </span><br><span class="line"> }</span><br><span class="line"> if (!isRepeat) {</span><br><span class="line"> list.push_back(str1[i]); </span><br><span class="line"> }</span><br><span class="line"> } </span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> for (int k = 0; k < list.size(); k++) {</span><br><span class="line"> printf("%c", list[k]);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line"> </span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1030-完美数列-(25-分)"><a href="#1030-完美数列-(25-分)" class="headerlink" title="1030 完美数列 (25 分)***"></a>1030 完美数列 (25 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805291311284224" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805291311284224</a></p>
<p>注意点:没理解透。采用二分查找防止超时,还有一种two pointers的方式。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">// 二分查找解法</span><br><span class="line">#include<cstdio></span><br><span class="line">#include<algorithm></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">const int maxn = 100010;</span><br><span class="line"></span><br><span class="line">int n, p, a[maxn];</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> scanf("%d%d", &n, &p);</span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> scanf("%d", &a[i]);</span><br><span class="line"> }</span><br><span class="line"> // 递增排序 </span><br><span class="line"> sort(a, a + n);</span><br><span class="line"> int ans = 1;</span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> int j = upper_bound(a + i + 1, a + n, (long long)a[i] * p) - a;</span><br><span class="line"> ans = max(ans, j - i);</span><br><span class="line"> }</span><br><span class="line"> printf("%d\n", ans);</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<figure class="highlight plain"><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><span class="line">// two pointers解法</span><br><span class="line">#include<cstdio></span><br><span class="line">#include<algorithm></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> const int maxn = 100010;</span><br><span class="line"> int n, p, a[maxn];</span><br><span class="line"> </span><br><span class="line"> scanf("%d%d", &n, &p);</span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> scanf("%d", &a[i]);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> sort(a, a + n);</span><br><span class="line"> </span><br><span class="line"> int i = 0, j = 0, count = 1;</span><br><span class="line"> while (i < n && j < n) {</span><br><span class="line"> // j不断右移,直到恰好不满足条件</span><br><span class="line"> while (j < n && a[j] <= (long long)a[i] * p) {</span><br><span class="line"> count = max(count, j - i + 1);</span><br><span class="line"> j++;</span><br><span class="line"> }</span><br><span class="line"> i++;</span><br><span class="line"> }</span><br><span class="line"> printf("%d\n", count);</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1031-查验身份证-(15-分)"><a href="#1031-查验身份证-(15-分)" class="headerlink" title="1031 查验身份证 (15 分)"></a>1031 查验身份证 (15 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805290334011392" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805290334011392</a></p>
<p>注意点:</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> char m[11] = {'1','0','X','9','8','7','6','5','4','3','2'};</span><br><span class="line"> </span><br><span class="line"> int wList[18] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};</span><br><span class="line"> int n;</span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> </span><br><span class="line"> char str[20];</span><br><span class="line"> bool flag = true;</span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> int sum = 0;</span><br><span class="line"> bool isAllNum = true;</span><br><span class="line"> scanf("%s", str);</span><br><span class="line"> for (int j = 0; j < 17; j++) {</span><br><span class="line"> if (str[j] >= '0' && str[j] <= '9') {</span><br><span class="line"> sum += (str[j] - '0') * wList[j];</span><br><span class="line"> } else {</span><br><span class="line"> isAllNum = false;</span><br><span class="line"> break;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> int r = sum % 11; </span><br><span class="line"> char M = m[r]; // 校验码</span><br><span class="line"> if (str[17] != M || isAllNum == false) {</span><br><span class="line"> flag = false;</span><br><span class="line"> printf("%s\n", str);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> if (flag) {</span><br><span class="line"> printf("All passed");</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line"> </span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1032-挖掘机技术哪家强-(20-分)"><a href="#1032-挖掘机技术哪家强-(20-分)" class="headerlink" title="1032 挖掘机技术哪家强 (20 分)***"></a>1032 挖掘机技术哪家强 (20 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805289432236032" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805289432236032</a></p>
<p>注意点:</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include <iostream></span><br><span class="line">#include <vector></span><br><span class="line">using namespace std;</span><br><span class="line">int main() {</span><br><span class="line"> int N;</span><br><span class="line"> cin >> N;</span><br><span class="line"> vector<int> a(N + 1);</span><br><span class="line"> int num, score;</span><br><span class="line"> for (int i = 0; i < N; i++) {</span><br><span class="line"> cin >> num >> score;</span><br><span class="line"> a[num] += score;</span><br><span class="line"> }</span><br><span class="line"> int max = a[1], t = 1;</span><br><span class="line"> for (int i = 2; i <= N; i++) {</span><br><span class="line"> if (max < a[i]) {</span><br><span class="line"> max = a[i];</span><br><span class="line"> t = i;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> cout << t << " " << max;</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1033-旧键盘打字-(20-分)"><a href="#1033-旧键盘打字-(20-分)" class="headerlink" title="1033 旧键盘打字 (20 分)"></a>1033 旧键盘打字 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805288530460672" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805288530460672</a></p>
<p>注意点:注意这题把字符当做数字使用的方式,以及getline与cin的区别,这题我原来用了cin,死活有一个点过不去,后来改了getline才可以。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<stdio.h></span><br><span class="line">#include<string></span><br><span class="line">#include<iostream></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">bool hashTable[128]= { 0 };//元素自己做下表</span><br><span class="line"></span><br><span class="line">int main() {</span><br><span class="line"> </span><br><span class="line"> string str1, str2;</span><br><span class="line"> </span><br><span class="line"> getline(cin, str1);</span><br><span class="line"> getline(cin, str2);</span><br><span class="line">// cin >> str1 >> str2;</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < str1.size(); i++) {</span><br><span class="line"> </span><br><span class="line"> hashTable[(int)str1[i]] = true;</span><br><span class="line"> </span><br><span class="line"> if (str1[i] >= 'A' && str1[i] <= 'Z') {</span><br><span class="line"> hashTable[((int)str1[i]) + 32] = true;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if (str1[i] == '+') {</span><br><span class="line"> </span><br><span class="line"> for (int j = 'A'; j <= 'Z'; j++) {</span><br><span class="line"> hashTable[(int)j] = true;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> int count = 0;</span><br><span class="line"> </span><br><span class="line"> for (int k = 0; k < str2.size(); k++) {</span><br><span class="line"> if (!hashTable[(int)str2[k]]) {</span><br><span class="line"> printf("%c", str2[k]);</span><br><span class="line"> count++;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if (count == 0) {</span><br><span class="line"> printf("\n");</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1034-有理数四则运算-(20-分)"><a href="#1034-有理数四则运算-(20-分)" class="headerlink" title="1034 有理数四则运算 (20 分)***"></a>1034 有理数四则运算 (20 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805287624491008" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805287624491008</a></p>
<p>注意点:分数的四则运算,有套路,背下来。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<algorithm></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">typedef long long ll;</span><br><span class="line"></span><br><span class="line">struct Fraction {</span><br><span class="line"> ll up, down;</span><br><span class="line">};</span><br><span class="line"></span><br><span class="line">ll gcd (ll a, ll b) {</span><br><span class="line"> // 辗转相除法</span><br><span class="line"> if (b == 0) { // 被除尽了 </span><br><span class="line"> return a; // 返回公约数 </span><br><span class="line"> } else {</span><br><span class="line"> return gcd(b, a % b);</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">// 化简 </span><br><span class="line">Fraction reduction (Fraction result) {</span><br><span class="line"> // 若分母为负 </span><br><span class="line"> if (result.down < 0) {</span><br><span class="line"> result.up = - result.up;</span><br><span class="line"> result.down = - result.down;</span><br><span class="line"> }</span><br><span class="line"> // 若分子为0</span><br><span class="line"> if (result.up == 0) {</span><br><span class="line"> result.down = 1;</span><br><span class="line"> } else {</span><br><span class="line"> int d = gcd(abs(result.up), abs(result.down)); // 分子分母的最大公约数</span><br><span class="line"> result.up /= d;</span><br><span class="line"> result.down /= d; </span><br><span class="line"> }</span><br><span class="line"> return result;</span><br><span class="line"> </span><br><span class="line">}</span><br><span class="line">// 加法 </span><br><span class="line">Fraction add (Fraction f1, Fraction f2) {</span><br><span class="line"> Fraction result;</span><br><span class="line"> result.up = f1.up * f2.down + f2.up * f1.down;</span><br><span class="line"> result.down = f1.down * f2.down;</span><br><span class="line"> return reduction(result);</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">// 减法</span><br><span class="line">Fraction minu (Fraction f1, Fraction f2) {</span><br><span class="line"> Fraction result;</span><br><span class="line"> result.up = f1.up * f2.down - f2.up * f1.down;</span><br><span class="line"> result.down = f1.down * f2.down;</span><br><span class="line"> return reduction(result);</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">// 乘法</span><br><span class="line">Fraction multi (Fraction f1, Fraction f2) {</span><br><span class="line"> Fraction result;</span><br><span class="line"> result.up = f1.up * f2.up;</span><br><span class="line"> result.down = f1.down * f2.down;</span><br><span class="line"> return reduction(result);</span><br><span class="line">} </span><br><span class="line"></span><br><span class="line">//除法</span><br><span class="line">Fraction divide (Fraction f1, Fraction f2) {</span><br><span class="line"> Fraction result;</span><br><span class="line"> result.up = f1.up * f2.down;</span><br><span class="line"> result.down = f1.down * f2.up;</span><br><span class="line"> return reduction(result);</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">// 输出</span><br><span class="line">void showResult (Fraction r) {</span><br><span class="line"> r = reduction(r);</span><br><span class="line"> if (r.up < 0) printf("(");</span><br><span class="line"> if (r.down == 1) {</span><br><span class="line"> printf("%lld", r.up); // 整数 </span><br><span class="line"> } else if (abs(r.up) / r.down) {</span><br><span class="line"> printf("%lld %lld/%lld", r.up / r.down, abs(r.up) % r.down, r.down);</span><br><span class="line"> } else {</span><br><span class="line"> printf("%lld/%lld", r.up, r.down);</span><br><span class="line"> }</span><br><span class="line"> if (r.up < 0) printf(")");</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">int main () {</span><br><span class="line"> </span><br><span class="line"> Fraction a, b;</span><br><span class="line"> </span><br><span class="line"> scanf("%lld/%lld %lld/%lld", &a.up, &a.down, &b.up, &b.down);</span><br><span class="line"> // 加法</span><br><span class="line"> showResult(a);</span><br><span class="line"> printf(" + ");</span><br><span class="line"> showResult(b);</span><br><span class="line"> printf(" = ");</span><br><span class="line"> showResult(add(a, b));</span><br><span class="line"> printf("\n");</span><br><span class="line"> // 减法</span><br><span class="line"> showResult(a);</span><br><span class="line"> printf(" - ");</span><br><span class="line"> showResult(b);</span><br><span class="line"> printf(" = ");</span><br><span class="line"> showResult(minu(a, b));</span><br><span class="line"> printf("\n");</span><br><span class="line"> // 乘法</span><br><span class="line"> showResult(a);</span><br><span class="line"> printf(" * ");</span><br><span class="line"> showResult(b);</span><br><span class="line"> printf(" = ");</span><br><span class="line"> showResult(multi(a, b));</span><br><span class="line"> printf("\n");</span><br><span class="line"> // 除法 </span><br><span class="line"> showResult(a);</span><br><span class="line"> printf(" / ");</span><br><span class="line"> showResult(b);</span><br><span class="line"> printf(" = ");</span><br><span class="line"> if (b.up == 0) {</span><br><span class="line"> printf("Inf");</span><br><span class="line"> } else {</span><br><span class="line"> showResult(divide(a, b)); </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1035-插入与归并-(25-分)"><a href="#1035-插入与归并-(25-分)" class="headerlink" title="1035 插入与归并 (25 分)***"></a>1035 插入与归并 (25 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805287624491008" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805287624491008</a></p>
<p>注意点:插入排序与归并排序的应用。</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">PAT乙级需要掌握的排序算法:</span><br><span class="line">一、基本排序算法:1. 冒泡排序 2. 选择排序 3. 插入排序</span><br><span class="line">二、高级排序算法:2. 归并排序(two pointer)2. 快速排序(two pointer)</span><br></pre></td></tr></table></figure>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<algorithm></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">const int N = 111;</span><br><span class="line">int origin[N], tempOri[N], changed[N]; // 原始数组,原始数组备份,目标数组</span><br><span class="line">int n;</span><br><span class="line"></span><br><span class="line">// 判断数组是否相同 </span><br><span class="line">bool isSame (int A[], int B[]) {</span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> if (A[i] != B[i]) return false;</span><br><span class="line"> }</span><br><span class="line"> return true;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">// 输出数组 </span><br><span class="line">bool showArray(int A[]) {</span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> printf("%d", A[i]);</span><br><span class="line"> if (i < n - 1) {</span><br><span class="line"> printf(" ");</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> printf("\n");</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">// 插入排序</span><br><span class="line">bool insertSort () {</span><br><span class="line"> bool flag = false; // 是否有与目标数组相同</span><br><span class="line"> for (int i = 1; i < n; i++) {</span><br><span class="line"> if (i != 1 && isSame(tempOri, changed)) {</span><br><span class="line"> flag = true; // 与目标相同且不是初始状态 </span><br><span class="line"> }</span><br><span class="line"> // 插入排序过程</span><br><span class="line"> int temp = tempOri[i], j = i;</span><br><span class="line"> while (j > 0 && tempOri[j - 1] > temp) {</span><br><span class="line"> tempOri[j] = tempOri[j - 1];</span><br><span class="line"> j--;</span><br><span class="line"> }</span><br><span class="line"> tempOri[j] = temp;</span><br><span class="line"> if (flag == true) {</span><br><span class="line"> return true; // 如果flag为true,则说明已达到目标数组,返回true </span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> return false; // 无相同目标数组 </span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">// 归并排序</span><br><span class="line">void mergeSort () {</span><br><span class="line"> bool flag = false;</span><br><span class="line"> for (int step = 2; step / 2 <= n; step *= 2) {</span><br><span class="line"> if (step != 2 && isSame(tempOri, changed)) {</span><br><span class="line"> flag = true;</span><br><span class="line"> }</span><br><span class="line"> for(int i = 0; i < n; i += step) {</span><br><span class="line"> sort(tempOri + i, tempOri + min(i + step, n));</span><br><span class="line"> }</span><br><span class="line"> if (flag == true) {</span><br><span class="line"> showArray(tempOri);</span><br><span class="line"> return;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line">} </span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> // 备份 </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> scanf("%d", &origin[i]);</span><br><span class="line"> tempOri[i] = origin[i];</span><br><span class="line"> }</span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> scanf("%d", &changed[i]); // 目标数组 </span><br><span class="line"> }</span><br><span class="line"> if (insertSort()) {</span><br><span class="line"> printf("Insertion Sort\n");</span><br><span class="line"> showArray(tempOri);</span><br><span class="line"> } else {</span><br><span class="line"> printf("Merge Sort\n");</span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> tempOri[i] = origin[i];</span><br><span class="line"> }</span><br><span class="line"> mergeSort();</span><br><span class="line"> }</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1036-跟奥巴马一起编程-(15-分)"><a href="#1036-跟奥巴马一起编程-(15-分)" class="headerlink" title="1036 跟奥巴马一起编程 (15 分)"></a>1036 跟奥巴马一起编程 (15 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805285812551680" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805285812551680</a></p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line">#include<math.h></span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> int n;</span><br><span class="line"> char str;</span><br><span class="line"> </span><br><span class="line"> scanf("%d %c", &n, &str);</span><br><span class="line"> int row = round(n / 2.0);</span><br><span class="line"> int column = n;</span><br><span class="line"> for (int i = 0; i < row; i++) {</span><br><span class="line"> for (int j = 0; j < column; j++) {</span><br><span class="line"> if (i == 0 || i == row - 1) {</span><br><span class="line"> if (j == column - 1) {</span><br><span class="line"> printf("%c\n", str); </span><br><span class="line"> } else {</span><br><span class="line"> printf("%c", str);</span><br><span class="line"> }</span><br><span class="line"> } else {</span><br><span class="line"> if (j == column - 1) {</span><br><span class="line"> printf("%c\n", str); </span><br><span class="line"> } else if (j == 0){</span><br><span class="line"> printf("%c", str);</span><br><span class="line"> } else {</span><br><span class="line"> printf(" ");</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1037-在霍格沃茨找零钱-(20-分)"><a href="#1037-在霍格沃茨找零钱-(20-分)" class="headerlink" title="1037 在霍格沃茨找零钱 (20 分)"></a>1037 在霍格沃茨找零钱 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805284923359232" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805284923359232</a></p>
<p>注意点:进制转换。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<math.h></span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int Galleon1, Sickle2, Knut3;</span><br><span class="line"> int Galleon4, Sickle5, Knut6;</span><br><span class="line"> </span><br><span class="line"> scanf("%d.%d.%d", &Galleon1, &Sickle2, &Knut3);</span><br><span class="line"> scanf("%d.%d.%d", &Galleon4, &Sickle5, &Knut6);</span><br><span class="line"> </span><br><span class="line"> int sum1;</span><br><span class="line"> int sum2;</span><br><span class="line"> int sum3;</span><br><span class="line"> </span><br><span class="line"> sum1 = Knut3 + Sickle2 * 29 + Galleon1 * 29 * 17;</span><br><span class="line"> sum2 = Knut6 + Sickle5 * 29 + Galleon4 * 29 * 17;</span><br><span class="line"> </span><br><span class="line"> sum3 = sum2 - sum1;</span><br><span class="line"> </span><br><span class="line"> int plus;</span><br><span class="line"> </span><br><span class="line"> if (sum3 < 0) {</span><br><span class="line"> plus = -1;</span><br><span class="line"> } else {</span><br><span class="line"> plus = 1;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> sum3 = abs(sum3);</span><br><span class="line"> </span><br><span class="line"> printf("%d.%d.%d", plus * (sum3 / 493), sum3 / 29 % 17, sum3 % 29);</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1038-统计同成绩学生-(20-分)"><a href="#1038-统计同成绩学生-(20-分)" class="headerlink" title="1038 统计同成绩学生 (20 分)"></a>1038 统计同成绩学生 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805284092887040" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805284092887040</a></p>
<p>注意点:利用map的思想,不然会超时。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line"></span><br><span class="line">int map[100010] = { 0 };</span><br><span class="line">main () {</span><br><span class="line"> int n;</span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> int temp;</span><br><span class="line"> scanf("%d", &temp);</span><br><span class="line"> map[temp]++;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> int m;</span><br><span class="line"> scanf("%d", &m);</span><br><span class="line"> </span><br><span class="line"> for (int j = 0; j < m; j++) {</span><br><span class="line"> </span><br><span class="line"> int temp2;</span><br><span class="line"> scanf("%d", &temp2);</span><br><span class="line"> </span><br><span class="line"> if (j == 0) {</span><br><span class="line"> printf("%d", map[temp2]);</span><br><span class="line"> } else {</span><br><span class="line"> printf(" %d", map[temp2]);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1039-到底买不买-(20-分)"><a href="#1039-到底买不买-(20-分)" class="headerlink" title="1039 到底买不买 (20 分)"></a>1039 到底买不买 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805283241443328" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805283241443328</a></p>
<p>注意点:利用hashTable的思想,把字符的ASCII码作为hash值。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<iostream></span><br><span class="line">#include<string></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int hashTable1[128] = { 0 };</span><br><span class="line"> </span><br><span class="line"> string str1, str2;</span><br><span class="line"> </span><br><span class="line"> getline(cin, str1);</span><br><span class="line"> getline(cin, str2);</span><br><span class="line"> </span><br><span class="line"> int len = str1.size();</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < str1.size(); i++) {</span><br><span class="line"> hashTable1[str1[i]]++;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> int lessCount = 0;</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < str2.size(); i++) {</span><br><span class="line"> </span><br><span class="line"> if (hashTable1[str2[i]] > 0) {</span><br><span class="line"> len--; </span><br><span class="line"> hashTable1[str2[i]]--;</span><br><span class="line"> } else {</span><br><span class="line"> lessCount++;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if (lessCount > 0) {</span><br><span class="line"> printf("No %d", lessCount);</span><br><span class="line"> } else {</span><br><span class="line"> printf("Yes %d", len);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1040-有几个PAT-(25-分)"><a href="#1040-有几个PAT-(25-分)" class="headerlink" title="1040 有几个PAT (25 分)***"></a>1040 有几个PAT (25 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805282389999616" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805282389999616</a></p>
<p>注意点:原理,累加每个A左边P的个数与右边T的个数的乘积,注意结果取模要在过程中,否则会溢出。B1045的思想类似。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<iostream></span><br><span class="line">#include<string></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">const int MAXN = 100010;</span><br><span class="line"></span><br><span class="line">int main () {</span><br><span class="line"> </span><br><span class="line"> int leftPNum[MAXN] = { 0 };</span><br><span class="line"> </span><br><span class="line"> string str;</span><br><span class="line"> </span><br><span class="line"> cin >> str; </span><br><span class="line"> </span><br><span class="line"> // 统计每一位从左往右数的P的数量 </span><br><span class="line"> for (int i = 0; i < str.size(); i++) {</span><br><span class="line"> if (i > 0) {</span><br><span class="line"> leftPNum[i] = leftPNum[i - 1]; // 继承上一位的数目 </span><br><span class="line"> }</span><br><span class="line"> if (str[i] == 'P') {</span><br><span class="line"> leftPNum[i]++;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> int count = 0;</span><br><span class="line"> int rightTnum = 0;</span><br><span class="line"> </span><br><span class="line"> for (int i = str.size() - 1; i >= 0; i--) {</span><br><span class="line"> </span><br><span class="line"> if (str[i] == 'T') {</span><br><span class="line"> rightTnum++;</span><br><span class="line"> } else if (str[i] == 'A') {</span><br><span class="line"> count = (count + leftPNum[i] * rightTnum ) % 1000000007; // 必须在这里取模,否则会在还没输出之前溢出 </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> printf("%d", count);</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1041-考试座位号-(15-分)"><a href="#1041-考试座位号-(15-分)" class="headerlink" title="1041 考试座位号 (15 分)"></a>1041 考试座位号 (15 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805281567916032" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805281567916032</a></p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line">#include<vector></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">struct Stu {</span><br><span class="line"> char n[15];</span><br><span class="line"> int testSeat;</span><br><span class="line"> int seat;</span><br><span class="line">}; </span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> int n;</span><br><span class="line"> vector<Stu> list;</span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> Stu stu;</span><br><span class="line"> scanf("%s %d %d", &stu.n, &stu.testSeat, &stu.seat);</span><br><span class="line"> list.push_back(stu);</span><br><span class="line"> }</span><br><span class="line"> int m;</span><br><span class="line"> scanf("%d", &m);</span><br><span class="line"> for (int j = 0; j < m; j++) {</span><br><span class="line"> int num;</span><br><span class="line"> scanf("%d", &num);</span><br><span class="line"> for (int k = 0; k < list.size(); k++) {</span><br><span class="line"> if (list[k].testSeat == num) {</span><br><span class="line"> printf("%s %d\n", list[k].n, list[k].seat); </span><br><span class="line"> }</span><br><span class="line"> } </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1042-字符统计-(20-分)"><a href="#1042-字符统计-(20-分)" class="headerlink" title="1042 字符统计 (20 分)"></a>1042 字符统计 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805280817135616" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805280817135616</a></p>
<p>注意点:同样是字符处理问题,注意ASCII字符与数字的转化,还有哈希表的思想。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<iostream></span><br><span class="line">#include<string></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> string str;</span><br><span class="line"> int hashTable[128] = { 0 };</span><br><span class="line"> </span><br><span class="line"> getline(cin, str);</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < str.size(); i++) {</span><br><span class="line"> int code;</span><br><span class="line"> if (str[i] >= 'A' && str[i] <= 'Z') {</span><br><span class="line"> code = str[i] + 32;</span><br><span class="line"> hashTable[code]++;</span><br><span class="line"> } else if (str[i] >= 'a' && str[i] <= 'z') {</span><br><span class="line"> code = str[i];</span><br><span class="line"> hashTable[code]++;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> int maxN = 0;</span><br><span class="line"> int c;</span><br><span class="line"> </span><br><span class="line"> for(int i = 'a'; i <= 'z'; i++)</span><br><span class="line"> {</span><br><span class="line"> if(hashTable[i] > maxN) {</span><br><span class="line"> maxN = hashTable[i];</span><br><span class="line"> c = i;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> printf("%c %d", c, maxN);</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1043-输出PATest-(20-分)"><a href="#1043-输出PATest-(20-分)" class="headerlink" title="1043 输出PATest (20 分)"></a>1043 输出PATest (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805280074743808" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805280074743808</a></p>
<p>注意点:直接暴力输出。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br></pre></td><td class="code"><pre><span class="line">#include <iostream></span><br><span class="line">#include <string></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"> </span><br><span class="line">int main()</span><br><span class="line">{</span><br><span class="line"> string s;</span><br><span class="line"> cin >> s;</span><br><span class="line"> int length = s.length();</span><br><span class="line"> int a[6] = { 0 };</span><br><span class="line"> for (int i = 0; i < length; i++)</span><br><span class="line"> {</span><br><span class="line"> if (s[i] == 'P')</span><br><span class="line"> {</span><br><span class="line"> a[0] ++;</span><br><span class="line"> }</span><br><span class="line"> else if (s[i] == 'A')</span><br><span class="line"> {</span><br><span class="line"> a[1] ++;</span><br><span class="line"> }</span><br><span class="line"> else if (s[i] == 'T')</span><br><span class="line"> {</span><br><span class="line"> a[2] ++;</span><br><span class="line"> }</span><br><span class="line"> else if (s[i] == 'e')</span><br><span class="line"> {</span><br><span class="line"> a[3] ++;</span><br><span class="line"> }</span><br><span class="line"> else if (s[i] == 's')</span><br><span class="line"> {</span><br><span class="line"> a[4] ++;</span><br><span class="line"> }</span><br><span class="line"> else if (s[i] == 't')</span><br><span class="line"> {</span><br><span class="line"> a[5] ++;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> for (int i = 0; i < length; i++)</span><br><span class="line"> {</span><br><span class="line"> if (a[0] != 0)</span><br><span class="line"> {</span><br><span class="line"> cout << "P";</span><br><span class="line"> a[0]--;</span><br><span class="line"> }</span><br><span class="line"> if (a[1] != 0)</span><br><span class="line"> {</span><br><span class="line"> cout << "A";</span><br><span class="line"> a[1]--;</span><br><span class="line"> }</span><br><span class="line"> if (a[2] != 0)</span><br><span class="line"> {</span><br><span class="line"> cout << "T";</span><br><span class="line"> a[2]--;</span><br><span class="line"> }</span><br><span class="line"> if (a[3] != 0)</span><br><span class="line"> {</span><br><span class="line"> cout << "e";</span><br><span class="line"> a[3]--;</span><br><span class="line"> }</span><br><span class="line"> if (a[4] != 0)</span><br><span class="line"> {</span><br><span class="line"> cout << "s";</span><br><span class="line"> a[4]--;</span><br><span class="line"> }</span><br><span class="line"> if (a[5] != 0)</span><br><span class="line"> {</span><br><span class="line"> cout << "t";</span><br><span class="line"> a[5]--;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1044-火星数字-(20-分)"><a href="#1044-火星数字-(20-分)" class="headerlink" title="1044 火星数字 (20 分)***"></a>1044 火星数字 (20 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805279328157696" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805279328157696</a></p>
<p>注意点:本质上是进制转化问题。注意substr的使用,注意getchar获取多余空格技巧。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<string></span><br><span class="line">#include<iostream></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">string mars1[13] = {"tret", "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"}; // 低位 </span><br><span class="line"></span><br><span class="line">string mars2[13] = {"####", "tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou"}; // 高位 </span><br><span class="line"></span><br><span class="line">// 数字转火星文 </span><br><span class="line">void convertToMars (string str) {</span><br><span class="line"> int num = 0;</span><br><span class="line"> for (int i = 0; i < str.size(); i++) { </span><br><span class="line"> num = num * 10 + (str[i] - '0');</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> // 高位</span><br><span class="line"> if (num / 13) {</span><br><span class="line"> cout << mars2[ num / 13 ];</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> // 空格</span><br><span class="line"> if ((num / 13) && (num % 13)) {</span><br><span class="line"> cout << " ";</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> // 低位</span><br><span class="line"> if (num % 13 || num == 0) {</span><br><span class="line"> cout << mars1[num % 13];</span><br><span class="line"> } </span><br><span class="line"> </span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">// 火星文转数字</span><br><span class="line">void marsToConvert (string str) {</span><br><span class="line"></span><br><span class="line"> int t1 = 0, t2 = 0;</span><br><span class="line"> </span><br><span class="line"> string s1, s2;</span><br><span class="line"> </span><br><span class="line"> s1 = str.substr(0, 3);</span><br><span class="line"> if (str.size() > 4) {</span><br><span class="line"> s2 = str.substr(4, 3);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> for (int j = 1; j <= 12; j++) {</span><br><span class="line"> if (s1 == mars1[j] || s2 == mars1[j]) {</span><br><span class="line"> t2 = j; // 低位 </span><br><span class="line"> }</span><br><span class="line"> if (s1 == mars2[j]) {</span><br><span class="line"> t1 = j; // 高位 </span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> cout << t1 * 13 + t2; </span><br><span class="line"> </span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int n;</span><br><span class="line"> </span><br><span class="line"> cin >> n;</span><br><span class="line"> getchar();</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) { </span><br><span class="line"> </span><br><span class="line"> string str;</span><br><span class="line"> getline(cin, str);</span><br><span class="line"> </span><br><span class="line"> if (str[0] >= '0' && str[0] <= '9') {</span><br><span class="line"> // 数字转火星文 </span><br><span class="line"> convertToMars(str);</span><br><span class="line"> } else {</span><br><span class="line"> // 火星文转数字 </span><br><span class="line"> marsToConvert(str);</span><br><span class="line"> }</span><br><span class="line"> cout << endl;</span><br><span class="line"> }</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1045-快速排序-(25-分)"><a href="#1045-快速排序-(25-分)" class="headerlink" title="1045 快速排序 (25 分)***"></a>1045 快速排序 (25 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805278589960192" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805278589960192</a></p>
<p>注意点:暴力会超时。思路原理与B1040一样,都是关注一个元素左边所有与右边所有的情况。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<vector></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">const int MAXN = 100010;</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int n;</span><br><span class="line"> </span><br><span class="line"> int a[MAXN], leftMax[MAXN], rightMin[MAXN];</span><br><span class="line"> </span><br><span class="line"> vector<int> ans;</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> scanf("%d", &a[i]);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> leftMax[0] = 0;</span><br><span class="line"> </span><br><span class="line"> // 找出i之前最大的 </span><br><span class="line"> for (int i = 1; i < n; i++) {</span><br><span class="line"> if (leftMax[i - 1] > a[i - 1]) {</span><br><span class="line"> leftMax[i] = leftMax[i - 1];</span><br><span class="line"> } else {</span><br><span class="line"> leftMax[i] = a[i - 1];</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> rightMin[n -1] = 1000000000; // 一个很大的数字 </span><br><span class="line"> // 找出i之后最小的</span><br><span class="line"> for (int i = n - 2; i >= 0; i--) {</span><br><span class="line"> if (rightMin[i + 1] < a[i + 1]) {</span><br><span class="line"> rightMin[i] = rightMin[i + 1];</span><br><span class="line"> } else {</span><br><span class="line"> rightMin[i] = a[i + 1];</span><br><span class="line"> }</span><br><span class="line"> } </span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> if (leftMax[i] < a[i] && rightMin[i] > a[i]) { // i之前都比它小,i之后都比它大,即为主元 </span><br><span class="line"> ans.push_back(a[i]);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> printf("%d\n", ans.size());</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < ans.size(); i++) {</span><br><span class="line"> if (i == 0) {</span><br><span class="line"> printf("%d", ans[i]);</span><br><span class="line"> } else {</span><br><span class="line"> printf(" %d", ans[i]);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if (ans.size() == 0) {</span><br><span class="line"> printf("\n");</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1046-划拳-(15-分)"><a href="#1046-划拳-(15-分)" class="headerlink" title="1046 划拳 (15 分)"></a>1046 划拳 (15 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805277847568384" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805277847568384</a></p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int n;</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> </span><br><span class="line"> int aCount = 0, bCount = 0;</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> int a1, r1, a2, r2;</span><br><span class="line"> scanf("%d %d %d %d", &a1, &r1, &a2, &r2); </span><br><span class="line"> if (a1 + a2 == r1 && a1 + a2 != r2) {</span><br><span class="line"> bCount++;</span><br><span class="line"> } else if (a1 + a2 == r2 && a1 + a2 != r1) {</span><br><span class="line"> aCount++;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> printf("%d %d", aCount, bCount);</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1047-编程团体赛-(20-分)"><a href="#1047-编程团体赛-(20-分)" class="headerlink" title="1047 编程团体赛 (20 分)"></a>1047 编程团体赛 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805277163896832" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805277163896832</a></p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int n;</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> int hashTable[10010] = { 0 };</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> </span><br><span class="line"> int teamNum, playerNum, score;</span><br><span class="line"> </span><br><span class="line"> scanf("%d-%d %d", &teamNum, &playerNum, &score);</span><br><span class="line"> </span><br><span class="line"> hashTable[teamNum] += score;</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> int maxTeam, maxScore = 0;</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < 10010; i++) {</span><br><span class="line"> if (hashTable[i] > maxScore) {</span><br><span class="line"> maxScore = hashTable[i];</span><br><span class="line"> maxTeam = i;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> printf("%d %d", maxTeam, maxScore);</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1048-数字加密-(20-分)"><a href="#1048-数字加密-(20-分)" class="headerlink" title="1048 数字加密 (20 分)"></a>1048 数字加密 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805276438282240" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805276438282240</a></p>
<p>注意点:注意在string类型下,字符串相加的技巧。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<string></span><br><span class="line">#include<iostream></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> string str1, str2;</span><br><span class="line"> </span><br><span class="line"> string t = "0123456789JQK";</span><br><span class="line"> cin >> str1 >> str2;</span><br><span class="line"> </span><br><span class="line"> int max;</span><br><span class="line"> int len1 = str1.size(), len2 = str2.size();</span><br><span class="line"> </span><br><span class="line"> max = len1 > len2 ? len1 : len2;</span><br><span class="line"> </span><br><span class="line"> // 补零 </span><br><span class="line"> if (len1 > len2) {</span><br><span class="line"> for (int i = 0; i < len1 - len2; i++) {</span><br><span class="line"> str2 = '0' + str2;</span><br><span class="line"> }</span><br><span class="line"> } else {</span><br><span class="line"> for (int i = 0; i < len2 - len1; i++) {</span><br><span class="line"> str1 = '0' + str1;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> string s = ""; </span><br><span class="line"> </span><br><span class="line"> for (int i = max - 1; i >= 0; i--) {</span><br><span class="line"> int loc = max - i;</span><br><span class="line"> </span><br><span class="line"> if (loc % 2 == 0) { // 偶数</span><br><span class="line"> s = t[((str2[i] - '0') - (str1[i] - '0') + 10) % 10] + s;</span><br><span class="line"> } else { // 奇数</span><br><span class="line"> s = t[((str1[i] - '0') + (str2[i] - '0')) % 13] + s;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> cout << s;</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1049-数列的片段和-(20-分)"><a href="#1049-数列的片段和-(20-分)" class="headerlink" title="1049 数列的片段和 (20 分)***"></a>1049 数列的片段和 (20 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805275792359424" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805275792359424</a></p>
<p>注意点:<a href="https://www.jianshu.com/p/937a367ae4ea。数学问题。" target="_blank" rel="noopener">https://www.jianshu.com/p/937a367ae4ea。数学问题。</a></p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include <stdio.h></span><br><span class="line"></span><br><span class="line">int main()</span><br><span class="line">{</span><br><span class="line"> int N;</span><br><span class="line"> double ai, sum = 0;</span><br><span class="line"></span><br><span class="line"> scanf("%d", &N);</span><br><span class="line"> for(int i = 0; i < N; i++)</span><br><span class="line"> {</span><br><span class="line"> scanf("%lf", &ai);</span><br><span class="line"> /* ai is put at the beginning to avoid overflow */</span><br><span class="line"> sum += ai * (i + 1) * (N - i);</span><br><span class="line"> }</span><br><span class="line"> printf("%.2lf", sum);</span><br><span class="line"></span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1050-螺旋矩阵-(25-分)"><a href="#1050-螺旋矩阵-(25-分)" class="headerlink" title="1050 螺旋矩阵 (25 分)***"></a>1050 螺旋矩阵 (25 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805275146436608" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805275146436608</a></p>
<p>注意点:还需要再理解下。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br></pre></td><td class="code"><pre><span class="line">// 用这三个会超时 </span><br><span class="line">//#include<cstdio></span><br><span class="line">//#include<algorithm></span><br><span class="line">//#include<math.h></span><br><span class="line"></span><br><span class="line">#include<bits/stdc++.h></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"> </span><br><span class="line">int a[10000][1000] = { 0 }; // 螺旋矩阵 </span><br><span class="line">int s[10000]; // 原数组 </span><br><span class="line"> </span><br><span class="line">bool cmp(int a, int b){</span><br><span class="line"> return a > b;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">int main(){</span><br><span class="line"> </span><br><span class="line"> int n,i,j,x,y,r,c,tot,minn = 9999;</span><br><span class="line"> </span><br><span class="line"> // 输入 </span><br><span class="line"> scanf("%d",&n);</span><br><span class="line"> for(int i = 0; i < n; i++) {</span><br><span class="line"> scanf("%d", &s[i]); </span><br><span class="line"> }</span><br><span class="line"> // 排序 </span><br><span class="line"> sort(s, s + n, cmp);</span><br><span class="line"> </span><br><span class="line"> // 计算行列 </span><br><span class="line"> for(i = 1; i <= sqrt(n * 1.0); i++)</span><br><span class="line"> {</span><br><span class="line"> if(n % i==0)</span><br><span class="line"> {</span><br><span class="line"> if(n / i - i < minn){</span><br><span class="line"> minn = n / i - i;</span><br><span class="line"> r = i;</span><br><span class="line"> }</span><br><span class="line"> } </span><br><span class="line"> }</span><br><span class="line"> c = n / r; //c>r c行r列</span><br><span class="line"> </span><br><span class="line"> a[1][1] = s[0]; // 初始点 </span><br><span class="line"> tot = 0; // 总数 </span><br><span class="line"> x = y = 1; // 初始化位置 </span><br><span class="line"> </span><br><span class="line"> while(tot < r * c-1) // 是否排满 </span><br><span class="line"> { </span><br><span class="line"> // 向右走 </span><br><span class="line"> while(y + 1 <= r && ! a[x][y + 1]) {</span><br><span class="line"> a[x][++y] = s[++tot];</span><br><span class="line"> }</span><br><span class="line"> // 向下走 </span><br><span class="line"> while(x + 1 <= c && !a[x + 1][y]) {</span><br><span class="line"> a[++x][y] = s[++tot];</span><br><span class="line"> }</span><br><span class="line"> // 向左走 </span><br><span class="line"> while(y - 1 > 0 && !a[x][y - 1]) {</span><br><span class="line"> a[x][--y] = s[++tot];</span><br><span class="line"> }</span><br><span class="line"> // 向上走 </span><br><span class="line"> while(x - 1 > 0 && !a[x - 1][y]) {</span><br><span class="line"> a[--x][y] = s[++tot];</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> // 打印结果 </span><br><span class="line"> for(i = 1; i <= c; i++) {</span><br><span class="line"> printf("%d", a[i][1]);</span><br><span class="line"> for(j=2; j <= r; j++) {</span><br><span class="line"> printf(" %d", a[i][j]);</span><br><span class="line"> } </span><br><span class="line"> printf("\n");</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1051-复数乘法-(15-分)"><a href="#1051-复数乘法-(15-分)" class="headerlink" title="1051 复数乘法 (15 分)"></a>1051 复数乘法 (15 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805274496319488" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805274496319488</a></p>
<p>注意点:三角恒等公式,复数的乘法。注意精度小于三位的情况要设为0。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include <stdio.h></span><br><span class="line">#include <math.h></span><br><span class="line"> </span><br><span class="line">main() {</span><br><span class="line"> </span><br><span class="line"> double r1, r2, p1, p2;</span><br><span class="line"> double a, b;</span><br><span class="line"> </span><br><span class="line"> scanf("%lf %lf %lf %lf", &r1, &p1, &r2, &p2);</span><br><span class="line"> </span><br><span class="line"> a = (r1 * r2) * cos(p1 + p2); // r1 * r2 (cosp1cosp2 - sinp1sinp2) </span><br><span class="line"> b = (r1 * r2) * sin(p1 + p2); // r1 * r2 (sinp1cosp2 + cosp1sinp2)</span><br><span class="line"> </span><br><span class="line"> if(fabs(a) < 0.01){</span><br><span class="line"> a = 0;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if(fabs(b) < 0.01){</span><br><span class="line"> b = 0;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if (b < 0) {</span><br><span class="line"> printf("%.2lf-%.2lfi", a, fabs(b));</span><br><span class="line"> } else {</span><br><span class="line"> printf("%.2lf+%.2lfi", a, b);</span><br><span class="line"> }</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1052-卖个萌-(20-分)"><a href="#1052-卖个萌-(20-分)" class="headerlink" title="1052 卖个萌 (20 分)"></a>1052 卖个萌 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805273883951104" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805273883951104</a></p>
<p>注意点:字符串处理。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<iostream></span><br><span class="line">#include<string></span><br><span class="line">#include<vector></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> vector<string> hand;</span><br><span class="line"> vector<string> eye;</span><br><span class="line"> vector<string> mouth;</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < 3; i++) {</span><br><span class="line"> string str;</span><br><span class="line"> getline(cin, str);</span><br><span class="line"> </span><br><span class="line"> vector<string> tempVector;</span><br><span class="line"> </span><br><span class="line"> int j = 0, k = 0;</span><br><span class="line"> while (j < str.size()) {</span><br><span class="line"> </span><br><span class="line"> if (str[j] == '[') {</span><br><span class="line"> string tempStr = "";</span><br><span class="line"> k = j + 1;</span><br><span class="line"> while (str[k] != ']') {</span><br><span class="line"> tempStr = tempStr + str[k];</span><br><span class="line"> k++;</span><br><span class="line"> }</span><br><span class="line"> tempVector.push_back(tempStr);</span><br><span class="line"> }</span><br><span class="line"> j++;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if (i == 0) {</span><br><span class="line"> hand = tempVector;</span><br><span class="line"> } else if (i == 1){</span><br><span class="line"> eye = tempVector;</span><br><span class="line"> } else if (i == 2) {</span><br><span class="line"> mouth = tempVector;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> int m;</span><br><span class="line"> </span><br><span class="line"> cin >> m;</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < m; i++) {</span><br><span class="line"> int a, b, c, d, e;</span><br><span class="line"> cin >> a >> b >> c >> d >> e;</span><br><span class="line"> if (a > hand.size() || b > eye.size() || c > mouth.size() || d > eye.size() || e > hand.size() || a < 1 || b < 1 || c < 1 || d < 1 || e < 1) {</span><br><span class="line"> cout << "Are you kidding me? @\\/@" << endl;</span><br><span class="line"> continue;</span><br><span class="line"> }</span><br><span class="line"> cout << hand[a - 1] << "(" << eye[b - 1] << mouth[c - 1] << eye[d - 1] << ")" << hand[e - 1] << endl;</span><br><span class="line"> } </span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1053-住房空置率-(20-分)"><a href="#1053-住房空置率-(20-分)" class="headerlink" title="1053 住房空置率 (20 分)"></a>1053 住房空置率 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805273284165632" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805273284165632</a></p>
<p>注意点:注意用printf输出%和\的技巧。<code>%%</code>,<code>\\</code></p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int n, D; // D观察期阈值 </span><br><span class="line"> </span><br><span class="line"> double e; // e阈值</span><br><span class="line"> </span><br><span class="line"> double ansA = 0, ansB = 0;</span><br><span class="line"> </span><br><span class="line"> scanf("%d %lf %d", &n, &e, &D);</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> </span><br><span class="line"> int m;</span><br><span class="line"> int count = 0;</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &m);</span><br><span class="line"> </span><br><span class="line"> for (int j = 0; j < m; j++) {</span><br><span class="line"> double t;</span><br><span class="line"> scanf("%lf", &t);</span><br><span class="line"> if (t < e) {</span><br><span class="line"> count++;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if (count > m / 2 && m > D) {</span><br><span class="line"> ansB++; // 空置 </span><br><span class="line"> } else if (count > m / 2 && m <= D) {</span><br><span class="line"> ansA++; // 可能空置 </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> printf("%.1lf%% %.1lf%%", (ansA / n) * 100, (ansB / n) * 100);</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1054-求平均值-(20-分)"><a href="#1054-求平均值-(20-分)" class="headerlink" title="1054 求平均值 (20 分)***"></a>1054 求平均值 (20 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805272659214336" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805272659214336</a></p>
<p>注意点:用sscanf和sprintf处理字符串数据。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include <iostream></span><br><span class="line">#include <cstdio></span><br><span class="line">#include <string.h></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">int main() {</span><br><span class="line"> int n, cnt = 0;</span><br><span class="line"> </span><br><span class="line"> char a[50], b[50];</span><br><span class="line"> </span><br><span class="line"> double temp, sum = 0.0;</span><br><span class="line"> </span><br><span class="line"> cin >> n;</span><br><span class="line"> </span><br><span class="line"> for(int i = 0; i < n; i++) {</span><br><span class="line"> </span><br><span class="line"> scanf("%s", a);</span><br><span class="line"> </span><br><span class="line"> sscanf(a, "%lf", &temp); // 把字符串以double类型赋给temp</span><br><span class="line"> </span><br><span class="line">// cout << "temp: " << temp << endl;</span><br><span class="line"> </span><br><span class="line"> sprintf(b, "%.2f", temp); // 把temp以.2double赋给b</span><br><span class="line"> </span><br><span class="line">// cout << "a:" << a << " b:" << b << endl;</span><br><span class="line"> </span><br><span class="line"> int flag = 0;</span><br><span class="line"> </span><br><span class="line"> for(int j = 0; j < strlen(a); j++) {</span><br><span class="line"> if(a[j] != b[j]) flag = 1;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if(flag || temp < -1000 || temp > 1000) {</span><br><span class="line"> printf("ERROR: %s is not a legal number\n", a);</span><br><span class="line"> continue;</span><br><span class="line"> } else {</span><br><span class="line"> sum += temp;</span><br><span class="line"> cnt++;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> if(cnt == 1) {</span><br><span class="line"> printf("The average of 1 number is %.2f", sum);</span><br><span class="line"> } else if(cnt > 1) {</span><br><span class="line"> printf("The average of %d numbers is %.2f", cnt, sum / cnt);</span><br><span class="line"> } else {</span><br><span class="line"> printf("The average of 0 numbers is Undefined");</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1055-集体照-(25-分)"><a href="#1055-集体照-(25-分)" class="headerlink" title="1055 集体照 (25 分)***"></a>1055 集体照 (25 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805272021680128" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805272021680128</a></p>
<p>注意点:自己独立做一遍。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br></pre></td><td class="code"><pre><span class="line">#include <iostream></span><br><span class="line">#include <algorithm></span><br><span class="line">#include <vector></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">struct node {</span><br><span class="line"> string name;</span><br><span class="line"> int height;</span><br><span class="line">};</span><br><span class="line"></span><br><span class="line">int cmp (struct node a, struct node b) {</span><br><span class="line"> return a.height != b.height ? a.height > b.height : a.name < b.name; // 身高不等,身高大的排前,身高相等,身高小的排前。 </span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">int main() {</span><br><span class="line"> </span><br><span class="line"> int n, k, m;</span><br><span class="line"> </span><br><span class="line"> cin >> n >> k; // n个人k排 </span><br><span class="line"> </span><br><span class="line"> vector<node> stu(n);</span><br><span class="line"> </span><br><span class="line"> for(int i = 0; i < n; i++) {</span><br><span class="line"> cin >> stu[i].name >> stu[i].height;</span><br><span class="line"> }</span><br><span class="line"> // 排序 </span><br><span class="line"> sort(stu.begin(), stu.end(), cmp);</span><br><span class="line"> </span><br><span class="line"> int t = 0, row = k;</span><br><span class="line"> </span><br><span class="line"> while(row) {</span><br><span class="line"> </span><br><span class="line"> if(row == k) {</span><br><span class="line"> m = n - n / k * (k - 1); // 最高一排人数 </span><br><span class="line"> }</span><br><span class="line"> else {</span><br><span class="line"> m = n / k; // 其余各排人数 </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> vector<string> ans(m);</span><br><span class="line"> ans[m / 2] = stu[t].name; // 中间最高的人 </span><br><span class="line"> </span><br><span class="line"> // 左边一列</span><br><span class="line"> int j = m / 2 - 1;</span><br><span class="line"> for(int i = t + 1; i < t + m; i = i + 2) {</span><br><span class="line"> ans[j--] = stu[i].name; // 从高到低间隔放入左边 </span><br><span class="line"> }</span><br><span class="line"> // 右边一列</span><br><span class="line"> j = m / 2 + 1;</span><br><span class="line"> for(int i = t + 2; i < t + m; i = i + 2) {</span><br><span class="line"> ans[j++] = stu[i].name; // 从高到低间隔放入右边 </span><br><span class="line"> }</span><br><span class="line"> // 输出当前排</span><br><span class="line"> cout << ans[0];</span><br><span class="line"> for(int i = 1; i < m; i++)</span><br><span class="line"> cout << " " << ans[i];</span><br><span class="line"> cout << endl;</span><br><span class="line"> </span><br><span class="line"> // 换下一排 </span><br><span class="line"> t = t + m;</span><br><span class="line"> row--;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1056-组合数的和-(15-分)"><a href="#1056-组合数的和-(15-分)" class="headerlink" title="1056 组合数的和 (15 分)"></a>1056 组合数的和 (15 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805271455449088" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805271455449088</a></p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include <cstdio></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">int main() {</span><br><span class="line"> </span><br><span class="line"> int n;</span><br><span class="line"> </span><br><span class="line"> int sum = 0;</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> </span><br><span class="line"> int a[10];</span><br><span class="line"> </span><br><span class="line"> for(int i = 0; i < n; i++) {</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &a[i]);</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> </span><br><span class="line"> int temp = a[i]; </span><br><span class="line"> for (int j = 0; j < n; j++) {</span><br><span class="line"> if (j != i) {</span><br><span class="line"> sum += a[i]*10 + a[j]; </span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> printf("%d", sum);</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1057-数零壹-(20-分)"><a href="#1057-数零壹-(20-分)" class="headerlink" title="1057 数零壹 (20 分)"></a>1057 数零壹 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805270914383872" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805270914383872</a></p>
<p>注意点:考察进制转换。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<string></span><br><span class="line">#include<iostream></span><br><span class="line">#include<vector></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> string str;</span><br><span class="line"> getline(cin, str);</span><br><span class="line"> int sum;</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < str.size(); i++) {</span><br><span class="line"> char temp = str[i];</span><br><span class="line"> int num = 0;</span><br><span class="line"> if (temp >= 'a' && temp <= 'z') {</span><br><span class="line"> num = temp - 'a' + 1;</span><br><span class="line"> sum += num;</span><br><span class="line"> }</span><br><span class="line"> if (temp >= 'A' && temp <= 'Z') {</span><br><span class="line"> num = temp - 'A' + 1;</span><br><span class="line"> sum += num;</span><br><span class="line"> } </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> int r;</span><br><span class="line"> int count1 = 0, count2 = 0;</span><br><span class="line"> </span><br><span class="line"> while (sum > 0) {</span><br><span class="line"> r = sum % 2;</span><br><span class="line"> if (r == 1) {</span><br><span class="line"> count1++;</span><br><span class="line"> } else if (r == 0) {</span><br><span class="line"> count2++;</span><br><span class="line"> }</span><br><span class="line"> sum = sum / 2;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> printf("%d %d", count2, count1);</span><br><span class="line"> </span><br><span class="line"> return 0; </span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1058-选择题-(20-分)"><a href="#1058-选择题-(20-分)" class="headerlink" title="1058 选择题 (20 分)"></a>1058 选择题 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805270356541440" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805270356541440</a></p>
<p>注意点:不难,但比较麻烦。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line"></span><br><span class="line">struct Ques {</span><br><span class="line"> int allScore; // 满分值 </span><br><span class="line"> int selectNum; // 选项个数</span><br><span class="line"> int rSelectNum; // 正确选项个数</span><br><span class="line"> char select[6];</span><br><span class="line">};</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int N, M; // 学生人数,多选题的个数</span><br><span class="line"> </span><br><span class="line"> scanf("%d %d", &N, &M);</span><br><span class="line"> </span><br><span class="line"> Ques list[M];</span><br><span class="line"> </span><br><span class="line"> int wrongAns[M] = { 0 };</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < M; i++) {</span><br><span class="line"> scanf("%d %d %d", &list[i].allScore, &list[i].selectNum, &list[i].rSelectNum);</span><br><span class="line"> for (int j = 0; j < list[i].rSelectNum; j++) {</span><br><span class="line"> getchar(); // 获取空格 </span><br><span class="line"> scanf("%c", &list[i].select[j]);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < N; i++) {</span><br><span class="line"> </span><br><span class="line"> getchar();</span><br><span class="line"> </span><br><span class="line"> int score = 0;</span><br><span class="line"> for (int j = 0; j < M; j++) {</span><br><span class="line"> </span><br><span class="line"> bool flag = false;</span><br><span class="line"> </span><br><span class="line"> if (j != 0) {</span><br><span class="line"> getchar(); // 空格 </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> int rNum;</span><br><span class="line"> scanf("(%d", &rNum);</span><br><span class="line"> </span><br><span class="line"> char c;</span><br><span class="line"> if (rNum == list[j].rSelectNum) {</span><br><span class="line"> bool isSame = true;</span><br><span class="line"> for (int k = 0; k < rNum; k++) { </span><br><span class="line"> scanf(" %c", &c);</span><br><span class="line"> if (c != list[j].select[k]) {</span><br><span class="line"> isSame = false;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> if (isSame) {</span><br><span class="line"> flag = true;</span><br><span class="line"> }</span><br><span class="line"> } else {</span><br><span class="line"> for (int k = 0; k < rNum; k++) { </span><br><span class="line"> scanf(" %c", &c);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> scanf(")");</span><br><span class="line"> </span><br><span class="line"> if (flag) {</span><br><span class="line"> score += list[j].allScore; </span><br><span class="line"> } else {</span><br><span class="line"> wrongAns[j]++; // 错误统计 </span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> printf("%d\n", score);</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> int maxWrong = 0;</span><br><span class="line"> for (int i = 0; i < M; i++) {</span><br><span class="line"> if(wrongAns[i] > maxWrong) {</span><br><span class="line"> maxWrong = wrongAns[i];</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if (maxWrong == 0) {</span><br><span class="line"> printf("Too simple");</span><br><span class="line"> } else {</span><br><span class="line"> printf("%d", maxWrong);</span><br><span class="line"> for (int i = 0; i < M; i++) {</span><br><span class="line"> if(wrongAns[i] == maxWrong) {</span><br><span class="line"> printf(" %d", i + 1);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1059-C语言竞赛-(20-分)"><a href="#1059-C语言竞赛-(20-分)" class="headerlink" title="1059 C语言竞赛 (20 分)***"></a>1059 C语言竞赛 (20 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805269828059136" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805269828059136</a></p>
<p>注意点:注意其中map查询不到的时候的处理方式,以及素数的判断方式。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<map></span><br><span class="line">#include<string></span><br><span class="line">#include<iostream></span><br><span class="line">#include<math.h></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">map<string, int> m;</span><br><span class="line"></span><br><span class="line">// 获取map的值 </span><br><span class="line">int getRank (string str) {</span><br><span class="line"> map<string, int>::iterator it = m.find(str);</span><br><span class="line"> if (it != m.end()) {</span><br><span class="line"> return it -> second;</span><br><span class="line"> } else {</span><br><span class="line"> return 0; // 没找到 </span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">// 是否是素数</span><br><span class="line">bool isPrime (int n) {</span><br><span class="line"> if (n <= 1) {</span><br><span class="line"> return false;</span><br><span class="line"> }</span><br><span class="line"> int sqr = (int)sqrt(1.0 * n);</span><br><span class="line"> for (int i = 2; i <= sqr; i++) {</span><br><span class="line"> if (n % i == 0) {</span><br><span class="line"> return false;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> return true;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">void check (string str) {</span><br><span class="line"> </span><br><span class="line"> int res = getRank(str);</span><br><span class="line"> </span><br><span class="line"> if (res == 0) { // 没找到 </span><br><span class="line"> cout << str << ": " << "Are you kidding?" << endl;</span><br><span class="line"> } else if (res == -1) {</span><br><span class="line"> cout << str << ": " << "Checked" << endl;</span><br><span class="line"> } else {</span><br><span class="line"> </span><br><span class="line"> if (res == 1) {</span><br><span class="line"> cout << str << ": " << "Mystery Award" << endl;</span><br><span class="line"> } else if(isPrime(res)) {</span><br><span class="line"> cout << str << ": " << "Minion" << endl;</span><br><span class="line"> } else {</span><br><span class="line"> cout << str << ": " << "Chocolate" << endl;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> m[str] = -1;</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int N;</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &N);</span><br><span class="line"> getchar(); // 获取空格 </span><br><span class="line"> string str;</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < N; i++) {</span><br><span class="line"> getline(cin, str);</span><br><span class="line"> m[str] = i + 1;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> int M;</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &M);</span><br><span class="line"> getchar();</span><br><span class="line"> </span><br><span class="line"> string str2;</span><br><span class="line"> for (int i = 0; i < M; i++) {</span><br><span class="line"> getline(cin, str2);</span><br><span class="line"> </span><br><span class="line"> check(str2);</span><br><span class="line"> } </span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1060-爱丁顿数-(25-分)"><a href="#1060-爱丁顿数-(25-分)" class="headerlink" title="1060 爱丁顿数 (25 分)"></a>1060 爱丁顿数 (25 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805269312159744" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805269312159744</a></p>
<p>注意点:从大到小排序。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line">#include<algorithm></span><br><span class="line"></span><br><span class="line">using namespace std; </span><br><span class="line"></span><br><span class="line">bool cmp (int a, int b) {</span><br><span class="line"> return a > b;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int n;</span><br><span class="line"> </span><br><span class="line"> int list[100010];</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> scanf("%d", &list[i]);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> // 从大到小排列 </span><br><span class="line"> sort(list, list + n, cmp);</span><br><span class="line"> </span><br><span class="line"> int ans = 0;</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> </span><br><span class="line"> int r = i + 1;</span><br><span class="line"> </span><br><span class="line"> if (list[i] > r) {</span><br><span class="line"> ans = r;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> } </span><br><span class="line"> </span><br><span class="line"> printf("%d", ans);</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1061-判断题-(15-分)"><a href="#1061-判断题-(15-分)" class="headerlink" title="1061 判断题 (15 分)"></a>1061 判断题 (15 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805268817231872" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805268817231872</a></p>
<p>注意点:</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line"></span><br><span class="line">struct node {</span><br><span class="line"> </span><br><span class="line"> int score;</span><br><span class="line"> int flag;</span><br><span class="line"> </span><br><span class="line">};</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int N, M;</span><br><span class="line"> </span><br><span class="line"> scanf("%d %d", &N, &M);</span><br><span class="line"> node list[M];</span><br><span class="line"> </span><br><span class="line"> // 分值 </span><br><span class="line"> for (int i = 0; i < M; i++) {</span><br><span class="line"> scanf("%d", &list[i].score);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> // 答案 </span><br><span class="line"> for (int i = 0; i < M; i++) {</span><br><span class="line"> scanf("%d", &list[i].flag);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < N; i++) {</span><br><span class="line"> </span><br><span class="line"> int sum = 0;</span><br><span class="line"> </span><br><span class="line"> for (int j = 0; j < M; j++) {</span><br><span class="line"> </span><br><span class="line"> int s;</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &s);</span><br><span class="line"> </span><br><span class="line"> if (s == list[j].flag) {</span><br><span class="line"> sum += list[j].score;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> printf("%d\n", sum);</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1062-最简分数-(20-分)"><a href="#1062-最简分数-(20-分)" class="headerlink" title="1062 最简分数 (20 分)***"></a>1062 最简分数 (20 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805268334886912" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805268334886912</a></p>
<p>注意点:求最大公约数,与分数的加减乘除并无关系。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include <iostream></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">// 最大公约数 </span><br><span class="line">int gcd(int a, int b){</span><br><span class="line"> return b == 0 ? a : gcd(b, a % b);</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">int main() {</span><br><span class="line"> </span><br><span class="line"> int n1, m1, n2, m2, k;</span><br><span class="line"> scanf("%d/%d %d/%d %d", &n1, &m1, &n2, &m2, &k);</span><br><span class="line"> </span><br><span class="line"> // 当n1/m1大于n2/m2 </span><br><span class="line"> if(n1 * m2 > n2 * m1) {</span><br><span class="line"> swap(n1, n2);</span><br><span class="line"> swap(m1, m2);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> int num = 1; // 分子 </span><br><span class="line"> </span><br><span class="line"> bool flag = false; // 是否要打印空格 </span><br><span class="line"> </span><br><span class="line"> // 直到num/k > n1/m1</span><br><span class="line"> while(n1 * k >= m1 * num) {</span><br><span class="line"> num++;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> // 在n1/m1和n2/m2之间,并且不可再约分的num/k </span><br><span class="line"> while(n1 * k < m1 * num && m2 * num < n2 * k) {</span><br><span class="line"> if(gcd(num, k) == 1) { // 最简(最大公约数是1) </span><br><span class="line"> printf("%s%d/%d", flag == true ? " " : "", num, k);</span><br><span class="line"> flag = true; </span><br><span class="line"> }</span><br><span class="line"> num++;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1063-计算谱半径-(20-分)"><a href="#1063-计算谱半径-(20-分)" class="headerlink" title="1063 计算谱半径 (20 分)"></a>1063 计算谱半径 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805267860930560" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805267860930560</a></p>
<p>注意点:理解题意。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<algorithm></span><br><span class="line">#include<cmath></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">double f (double a, double b){</span><br><span class="line"> return sqrt(( a * a + b * b ));</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">int main () {</span><br><span class="line"> </span><br><span class="line"> int n;</span><br><span class="line"> double a, b, ans = 0;</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> scanf("%lf%lf", &a, &b);</span><br><span class="line"> ans = max(ans, f(a, b));</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> printf("%.2f\n",ans);</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1064-朋友数-(20-分)"><a href="#1064-朋友数-(20-分)" class="headerlink" title="1064 朋友数 (20 分)"></a>1064 朋友数 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805267416334336" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805267416334336</a></p>
<p>注意点:灵活运用hashTable,sort,vector,string。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line">#include<iostream></span><br><span class="line">#include<string></span><br><span class="line">#include<vector></span><br><span class="line">#include<algorithm></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int n;</span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> </span><br><span class="line"> vector<int> v;</span><br><span class="line"> int list[10010] = { 0 }; // 验证用 </span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> string str;</span><br><span class="line"> cin >> str;</span><br><span class="line"> int sum = 0;</span><br><span class="line"> </span><br><span class="line"> for (int j = 0; j < str.size(); j++) {</span><br><span class="line"> sum += str[j] - '0';</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if (list[sum] == 0) {</span><br><span class="line"> v.push_back(sum);</span><br><span class="line"> list[sum] = 1; </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> printf("%d\n", v.size());</span><br><span class="line"> sort(v.begin(), v.end());</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < v.size(); i++) {</span><br><span class="line"> if (i == 0) {</span><br><span class="line"> printf("%d", v[i]); </span><br><span class="line"> } else {</span><br><span class="line"> printf(" %d", v[i]);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0; </span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1065-单身狗-(25-分)"><a href="#1065-单身狗-(25-分)" class="headerlink" title="1065 单身狗 (25 分)"></a>1065 单身狗 (25 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805266942377984" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805266942377984</a></p>
<p>注意点:注意特殊情况00000,所以输出需要%05d,并且数组初始化为-1</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<vector></span><br><span class="line">#include<algorithm></span><br><span class="line">#include<cstring></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int n;</span><br><span class="line"> </span><br><span class="line"> vector<int> ori;</span><br><span class="line"> vector<int> ans;</span><br><span class="line"> </span><br><span class="line"> int list1[100000]; // 用于存储couple</span><br><span class="line"> int list2[100000]; // 用于查询</span><br><span class="line"> </span><br><span class="line"> // 全部设为-1,因为00000也是ID </span><br><span class="line"> memset(list1, -1, sizeof(list1));</span><br><span class="line"> memset(list2, -1, sizeof(list2));</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> int a, b;</span><br><span class="line"> scanf("%d %d", &a, &b);</span><br><span class="line"> list1[a] = b;</span><br><span class="line"> list1[b] = a;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> int m;</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &m);</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < m; i++) {</span><br><span class="line"> int a;</span><br><span class="line"> scanf("%d", &a);</span><br><span class="line"> list2[a] = 1;</span><br><span class="line"> ori.push_back(a);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < m; i++) {</span><br><span class="line"> </span><br><span class="line"> int a = -1, b = -1, c = -1;</span><br><span class="line"> </span><br><span class="line"> a = ori[i];</span><br><span class="line"> b = list1[a]; // a的对象</span><br><span class="line"> </span><br><span class="line"> if (b == -1) {</span><br><span class="line"> ans.push_back(a);</span><br><span class="line"> } else {</span><br><span class="line"> c = list2[b]; // b是否在list2中 </span><br><span class="line"> </span><br><span class="line"> if (c == -1) {</span><br><span class="line"> ans.push_back(a);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> sort(ans.begin(), ans.end());</span><br><span class="line"> printf("%d\n", ans.size());</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < ans.size(); i++) {</span><br><span class="line"> if (i == 0) {</span><br><span class="line"> printf("%05d", ans[i]); </span><br><span class="line"> } else {</span><br><span class="line"> printf(" %05d", ans[i]);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0; </span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1066-图像过滤-(15-分)。"><a href="#1066-图像过滤-(15-分)。" class="headerlink" title="1066 图像过滤 (15 分)。"></a>1066 图像过滤 (15 分)。</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805266514558976" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805266514558976</a></p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int M, N, A, B, r;</span><br><span class="line"> int arr[510][510];</span><br><span class="line"> </span><br><span class="line"> scanf("%d %d %d %d %d", &M, &N, &A, &B, &r);</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < M; i++) {</span><br><span class="line"> for (int j = 0; j < N; j++) {</span><br><span class="line"> int t; </span><br><span class="line"> scanf("%d", &t);</span><br><span class="line"> if (t >= A && t <= B) {</span><br><span class="line"> arr[i][j] = r;</span><br><span class="line"> } else {</span><br><span class="line"> arr[i][j] = t;</span><br><span class="line"> } </span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < M; i++) {</span><br><span class="line"> for (int j = 0; j < N; j++) {</span><br><span class="line"> if (j == 0) {</span><br><span class="line"> printf("%03d", arr[i][j]); </span><br><span class="line"> } else {</span><br><span class="line"> printf(" %03d", arr[i][j]);</span><br><span class="line"> } </span><br><span class="line"> if (j == N - 1) {</span><br><span class="line"> printf("\n");</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1067-试密码-(20-分)"><a href="#1067-试密码-(20-分)" class="headerlink" title="1067 试密码 (20 分)***"></a>1067 试密码 (20 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805266007048192" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805266007048192</a></p>
<p>注意点:注意格式问题。注意获取行数的方式。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<iostream></span><br><span class="line">#include<string></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"></span><br><span class="line"> string ans;</span><br><span class="line"> int n;</span><br><span class="line"> cin >> ans >> n;</span><br><span class="line"> string str;</span><br><span class="line"> bool flag = true;</span><br><span class="line"> getchar();</span><br><span class="line"> int count = 0;</span><br><span class="line"> </span><br><span class="line"> while (getline(cin, str) && str != "#") {</span><br><span class="line"> </span><br><span class="line"> if (flag) {</span><br><span class="line"> </span><br><span class="line"> if (str == ans) {</span><br><span class="line"> flag = false;</span><br><span class="line"> cout << "Welcome in" << endl;</span><br><span class="line"> } else {</span><br><span class="line"> </span><br><span class="line"> cout << "Wrong password: " << str << endl;</span><br><span class="line"> </span><br><span class="line"> count++;</span><br><span class="line"> </span><br><span class="line"> if (count >= n) {</span><br><span class="line"> flag = false;</span><br><span class="line"> cout << "Account locked" << endl;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> } else {</span><br><span class="line"> continue; </span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0; </span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1068-万绿丛中一点红-(20-分)"><a href="#1068-万绿丛中一点红-(20-分)" class="headerlink" title="1068 万绿丛中一点红 (20 分)"></a>1068 万绿丛中一点红 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805265579229184" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805265579229184</a></p>
<p>注意点:坑点在于审题,注意是要“独一无二”的颜色。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<cmath></span><br><span class="line">#include<map></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int M, N, TOL;</span><br><span class="line"> </span><br><span class="line"> map<int, int> vis; // 独一无二 </span><br><span class="line"> </span><br><span class="line"> scanf("%d %d %d", &M, &N, &TOL);</span><br><span class="line"> int arr[N][M];</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < N; i++) {</span><br><span class="line"> for (int j = 0; j < M; j++) {</span><br><span class="line"> scanf("%d", &arr[i][j]);</span><br><span class="line"> vis[arr[i][j]]++;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> int count = 0;</span><br><span class="line"> int x, y, color;</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < N; i++) {</span><br><span class="line"> for (int j = 0; j < M; j++) {</span><br><span class="line"> if (vis[arr[i][j]] == 1) {</span><br><span class="line"> int c = arr[i][j];</span><br><span class="line"> </span><br><span class="line"> // 上 </span><br><span class="line"> if (i - 1 >= 0) {</span><br><span class="line"> if (abs(arr[i][j] - arr[i - 1][j]) <= TOL) {</span><br><span class="line"> continue;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> // 右上 </span><br><span class="line"> if (i - 1 >= 0 && j + 1 <= M) {</span><br><span class="line"> if (abs(arr[i][j] - arr[i - 1][j + 1]) <= TOL) {</span><br><span class="line"> continue;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> // 右 </span><br><span class="line"> if (j + 1 <= M) {</span><br><span class="line"> if (abs(arr[i][j] - arr[i][j + 1]) <= TOL) {</span><br><span class="line"> continue;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> // 右下 </span><br><span class="line"> if (i + 1 <= N && j + 1 <= M) { </span><br><span class="line"> if (abs(arr[i][j] - arr[i + 1][j + 1]) <= TOL) {</span><br><span class="line"> continue;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> // 下 </span><br><span class="line"> if (i + 1 <= N) {</span><br><span class="line"> if (abs(arr[i][j] - arr[i + 1][j]) <= TOL) {</span><br><span class="line"> continue;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> // 左下 </span><br><span class="line"> if (i + 1 <= N && j - 1 >= 0) {</span><br><span class="line"> if (abs(arr[i][j] - arr[i + 1][j - 1]) <= TOL) {</span><br><span class="line"> continue;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> // 左 </span><br><span class="line"> if (j - 1 >= 0) {</span><br><span class="line"> if (abs(arr[i][j] - arr[i][j - 1]) <= TOL) {</span><br><span class="line"> continue;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> // 左上 </span><br><span class="line"> if (j - 1 >= 0 && i - 1 >= 0) {</span><br><span class="line"> if (abs(arr[i][j] - arr[i - 1][j - 1]) <= TOL) {</span><br><span class="line"> continue;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> x = i;</span><br><span class="line"> y = j;</span><br><span class="line"> color = arr[i][j];</span><br><span class="line"> </span><br><span class="line"> count++;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if (count == 0) {</span><br><span class="line"> printf("Not Exist");</span><br><span class="line"> } else if (count == 1) {</span><br><span class="line"> printf("(%d, %d): %d", y + 1, x + 1, color);</span><br><span class="line"> } else {</span><br><span class="line"> printf("Not Unique");</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1069-微博转发抽奖-(20-分)"><a href="#1069-微博转发抽奖-(20-分)" class="headerlink" title="1069 微博转发抽奖 (20 分)***"></a>1069 微博转发抽奖 (20 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805265159798784" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805265159798784</a></p>
<p>注意点:这题网上搜的答案可以看出,在一定情况下,没有搜到key的map返回0也是可以作为判断依据的。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<iostream></span><br><span class="line">#include<string></span><br><span class="line">#include<map></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">map<string, int> m;</span><br><span class="line"></span><br><span class="line">int isRepeat (string str) {</span><br><span class="line"> map<string, int>::iterator it = m.find(str);</span><br><span class="line"> if (it != m.end()) {</span><br><span class="line"> return it -> second;</span><br><span class="line"> } else {</span><br><span class="line"> return 0; // 没找到 </span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int M, N, S;</span><br><span class="line"> </span><br><span class="line"> scanf("%d %d %d", &M, &N, &S);</span><br><span class="line"> getchar();</span><br><span class="line"> int luck = S;</span><br><span class="line"> string str;</span><br><span class="line"> int count = 0;</span><br><span class="line"> </span><br><span class="line"> int r = 0;</span><br><span class="line"> </span><br><span class="line"> for (int i = 1; i <= M; i++) {</span><br><span class="line"> getline(cin, str);</span><br><span class="line"> </span><br><span class="line"> if (luck <= M && i == luck) {</span><br><span class="line"> int res = isRepeat(str);</span><br><span class="line"> if (res == 0) {</span><br><span class="line"> cout << str << endl;</span><br><span class="line"> count++;</span><br><span class="line"> m[str] = 1;</span><br><span class="line"> luck += N; </span><br><span class="line"> } else {</span><br><span class="line"> luck++; </span><br><span class="line"> } </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if (count == 0) {</span><br><span class="line"> cout << "Keep going..." << endl;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<p>另外答案</p>
<figure class="highlight plain"><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><span class="line">#include <iostream></span><br><span class="line">#include <map></span><br><span class="line">using namespace std;</span><br><span class="line">int main() {</span><br><span class="line"> int m, n, s;</span><br><span class="line"> scanf("%d%d%d", &m, &n, &s);</span><br><span class="line"> string str;</span><br><span class="line"> map<string, int> mapp;</span><br><span class="line"> bool flag = false;</span><br><span class="line"> for (int i = 1; i <= m; i++) {</span><br><span class="line"> cin >> str;</span><br><span class="line"> if (mapp[str] == 1) s = s + 1;</span><br><span class="line"> if (i == s && mapp[str] == 0) {</span><br><span class="line"> mapp[str] = 1;</span><br><span class="line"> cout << str << endl;</span><br><span class="line"> flag = true;</span><br><span class="line"> s = s + n;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> if (flag == false) cout << "Keep going...";</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1070-结绳-(25-分)"><a href="#1070-结绳-(25-分)" class="headerlink" title="1070 结绳 (25 分)"></a>1070 结绳 (25 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805264706813952" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805264706813952</a></p>
<p>注意点:越长的绳子对折的次数应该要越少,最后才会最长。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include <iostream></span><br><span class="line">#include <algorithm></span><br><span class="line">#include <vector></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">int main() {</span><br><span class="line"> </span><br><span class="line"> int n;</span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> </span><br><span class="line"> vector<int> v(n);</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> scanf("%d", &v[i]);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> sort(v.begin(), v.end());</span><br><span class="line"> </span><br><span class="line"> int result = v[0];</span><br><span class="line"> </span><br><span class="line"> for (int i = 1; i < n; i++) {</span><br><span class="line"> result = (result + v[i]) / 2;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> printf("%d", result);</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1071-小赌怡情-(15-分)"><a href="#1071-小赌怡情-(15-分)" class="headerlink" title="1071 小赌怡情 (15 分)"></a>1071 小赌怡情 (15 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805264312549376" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805264312549376</a></p>
<p>注意点:注意格式,total前面是两个空格。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include<cstdio></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int T, K; // 赠送筹码,游戏次数</span><br><span class="line"> </span><br><span class="line"> int chip;</span><br><span class="line"> scanf("%d %d", &T, &K);</span><br><span class="line"> chip = T;</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < K; i++) {</span><br><span class="line"> </span><br><span class="line"> int n1, b, t, n2;</span><br><span class="line"> </span><br><span class="line"> int res;</span><br><span class="line"> scanf("%d %d %d %d", &n1, &b, &t, &n2);</span><br><span class="line"> </span><br><span class="line"> if (chip == 0) {</span><br><span class="line"> printf("Game Over.\n");</span><br><span class="line"> break;</span><br><span class="line"> }</span><br><span class="line"> if (t > chip) {</span><br><span class="line"> printf("Not enough tokens. Total = %d.\n", chip);</span><br><span class="line"> continue;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if (n2 > n1) {</span><br><span class="line"> res = 1;</span><br><span class="line"> } else if (n2 < n1){</span><br><span class="line"> res = 0;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if ( res == b ) {</span><br><span class="line"> chip += t;</span><br><span class="line"> printf("Win %d! Total = %d.\n", t, chip);</span><br><span class="line"> } else {</span><br><span class="line"> chip -= t;</span><br><span class="line"> printf("Lose %d. Total = %d.\n", t, chip);</span><br><span class="line"> } </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1072-开学寄语-(20-分)"><a href="#1072-开学寄语-(20-分)" class="headerlink" title="1072 开学寄语 (20 分)"></a>1072 开学寄语 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805263964422144" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805263964422144</a></p>
<p>注意点:注意格式问题,其中四位数字需要尤其注意, %04d。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<vector></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int N, M; // 学生人数,需要被查缴的物品编号 </span><br><span class="line"> </span><br><span class="line"> char name[5];</span><br><span class="line"> int arr[10000] = { 0 };</span><br><span class="line"> scanf("%d %d", &N, &M);</span><br><span class="line"> int nameCount = 0, itemCount = 0;</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < M; i++) {</span><br><span class="line"> int n;</span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> arr[n] = 1;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < N; i++) {</span><br><span class="line"> </span><br><span class="line"> int tempN;</span><br><span class="line"> vector<int> v; // 存储当前被缴获的</span><br><span class="line"> bool flag = false; </span><br><span class="line"> </span><br><span class="line"> scanf("%s %d", name, &tempN);</span><br><span class="line"> for (int j = 0; j < tempN; j++) {</span><br><span class="line"> int k;</span><br><span class="line"> scanf("%d", &k);</span><br><span class="line"> if (arr[k] == 1) {</span><br><span class="line"> v.push_back(k);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if (v.size() != 0) {</span><br><span class="line"> nameCount++;</span><br><span class="line"> itemCount += v.size();</span><br><span class="line"> printf("%s:", name);</span><br><span class="line"> for (int h = 0; h < v.size(); h++) {</span><br><span class="line"> printf(" %04d", v[h]);</span><br><span class="line"> }</span><br><span class="line"> printf("\n");</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> printf("%d %d", nameCount, itemCount);</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1073-多选题常见计分法-(20-分)"><a href="#1073-多选题常见计分法-(20-分)" class="headerlink" title="1073 多选题常见计分法 (20 分)"></a>1073 多选题常见计分法 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805263624683520" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805263624683520</a></p>
<p>注意点:可以与B1058联动,我这里采用网上 “柳婼” 的做法。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include <iostream></span><br><span class="line">#include <vector></span><br><span class="line">#include <cmath></span><br><span class="line">using namespace std;</span><br><span class="line">int main() {</span><br><span class="line"> int n, m, optnum, truenum, temp, maxcnt = 0;</span><br><span class="line"> int hash[] = {1, 2, 4, 8, 16}, opt[1010][110] = {0};</span><br><span class="line"> char c;</span><br><span class="line"> scanf("%d %d", &n, &m);</span><br><span class="line"> vector<int> fullscore(m), trueopt(m);</span><br><span class="line"> vector<vector<int> > cnt(m, vector<int>(5));</span><br><span class="line"> for (int i = 0; i < m; i++) {</span><br><span class="line"> scanf("%d %d %d", &fullscore[i], &optnum, &truenum);</span><br><span class="line"> for (int j = 0; j < truenum; j++) {</span><br><span class="line"> scanf(" %c", &c);</span><br><span class="line"> trueopt[i] += hash[c-'a'];</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> double grade = 0;</span><br><span class="line"> for (int j = 0; j < m; j++) {</span><br><span class="line"> getchar();</span><br><span class="line"> scanf("(%d", &temp);</span><br><span class="line"> for (int k = 0; k < temp; k++) {</span><br><span class="line"> scanf(" %c)", &c);</span><br><span class="line"> opt[i][j] += hash[c-'a'];</span><br><span class="line"> }</span><br><span class="line"> int el = opt[i][j] ^ trueopt[j];</span><br><span class="line"> if (el) {</span><br><span class="line"> if ((opt[i][j] | trueopt[j]) == trueopt[j]) {</span><br><span class="line"> grade += fullscore[j] * 1.0 / 2;</span><br><span class="line"> }</span><br><span class="line"> if (el) {</span><br><span class="line"> for (int k = 0; k < 5; k++)</span><br><span class="line"> if (el & hash[k]) cnt[j][k]++;</span><br><span class="line"> }</span><br><span class="line"> } else {</span><br><span class="line"> grade += fullscore[j];</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> printf("%.1f\n", grade);</span><br><span class="line"> }</span><br><span class="line"> for (int i = 0; i < m; i++)</span><br><span class="line"> for (int j = 0; j < 5; j++)</span><br><span class="line"> maxcnt = maxcnt > cnt[i][j] ? maxcnt : cnt[i][j];</span><br><span class="line"> </span><br><span class="line"> if (maxcnt == 0) {</span><br><span class="line"> printf("Too simple\n");</span><br><span class="line"> } else {</span><br><span class="line"> for (int i = 0; i < m; i++) {</span><br><span class="line"> for (int j = 0; j < cnt[i].size(); j++) {</span><br><span class="line"> if (maxcnt == cnt[i][j])</span><br><span class="line"> printf("%d %d-%c\n", maxcnt, i+1, 'a'+j);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1074-宇宙无敌加法器-(20-分)"><a href="#1074-宇宙无敌加法器-(20-分)" class="headerlink" title="1074 宇宙无敌加法器 (20 分)***"></a>1074 宇宙无敌加法器 (20 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805263297527808" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805263297527808</a></p>
<p>注意点:注意这里补零的方式,并且理解为什么最后一个进位一定是1。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include <iostream></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">int main() {</span><br><span class="line"> </span><br><span class="line"> string s, s1, s2, ans; // 进制表,第一个数,第二个数,答案 </span><br><span class="line"> </span><br><span class="line"> int carry = 0, flag = 0; // 进位,结果是否为0</span><br><span class="line"> </span><br><span class="line"> cin >> s >> s1 >> s2;</span><br><span class="line"> </span><br><span class="line"> ans = s;</span><br><span class="line"> </span><br><span class="line"> // 将s1和s2变的与s一样长, 前面都是'0' </span><br><span class="line"> string ss1(s.length() - s1.length(), '0');</span><br><span class="line"> s1 = ss1 + s1;</span><br><span class="line"> string ss2(s.length() - s2.length(), '0');</span><br><span class="line"> s2 = ss2 + s2;</span><br><span class="line"> </span><br><span class="line"> for(int i = s.length() - 1; i >= 0; i--) {</span><br><span class="line"> </span><br><span class="line"> int mod = s[i] == '0' ? 10 : (s[i] - '0'); // 进制 </span><br><span class="line"> </span><br><span class="line"> ans[i] = (s1[i] - '0' + s2[i] - '0' + carry) % mod + '0'; // 当前位 </span><br><span class="line"> </span><br><span class="line"> carry = (s1[i] - '0' + s2[i] - '0' + carry) / mod; // 进位,进位永远都是1 </span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if (carry != 0) ans = '1' + ans;</span><br><span class="line"> </span><br><span class="line"> for(int i = 0; i < ans.size(); i++) {</span><br><span class="line"> if (ans[i] != '0' || flag == 1) {</span><br><span class="line"> flag = 1;</span><br><span class="line"> cout << ans[i];</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> if (flag == 0) cout << 0;</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1075-链表元素分类-(25-分)"><a href="#1075-链表元素分类-(25-分)" class="headerlink" title="1075 链表元素分类 (25 分)"></a>1075 链表元素分类 (25 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805262953594880" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805262953594880</a></p>
<p>注意点:将数据分为3类,最后输出的时候有技巧。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include <iostream></span><br><span class="line">#include <vector></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">struct node {</span><br><span class="line"> int data, next;</span><br><span class="line">}list[100000];</span><br><span class="line"></span><br><span class="line">vector<int> v[3];</span><br><span class="line"></span><br><span class="line">int main() {</span><br><span class="line"> </span><br><span class="line"> int start, n, k, a;</span><br><span class="line"> </span><br><span class="line"> scanf("%d%d%d", &start, &n, &k); // 第一个结点地址,结点总个数,以及正整数K </span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> scanf("%d", &a); // 结点地址作为下标 </span><br><span class="line"> scanf("%d%d", &list[a].data, &list[a].next);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> int p = start;</span><br><span class="line"> </span><br><span class="line"> // 分为三类 </span><br><span class="line"> while(p != -1) {</span><br><span class="line"> </span><br><span class="line"> int data = list[p].data;</span><br><span class="line"> </span><br><span class="line"> if (data < 0) { // 小于0的为一类 </span><br><span class="line"> v[0].push_back(p);</span><br><span class="line"> }</span><br><span class="line"> else if (data >= 0 && data <= k) { // [0, k]为一类 </span><br><span class="line"> v[1].push_back(p);</span><br><span class="line"> }</span><br><span class="line"> else { // 大于k为一类 </span><br><span class="line"> v[2].push_back(p);</span><br><span class="line"> }</span><br><span class="line"> p = list[p].next;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> int flag = 0;</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < 3; i++) {</span><br><span class="line"> for (int j = 0; j < v[i].size(); j++) {</span><br><span class="line"> if (flag == 0) {</span><br><span class="line"> printf("%05d %d ", v[i][j], list[v[i][j]].data); // 第一次,输出当前结点 </span><br><span class="line"> flag = 1;</span><br><span class="line"> } else {</span><br><span class="line"> printf("%05d\n%05d %d ", v[i][j], v[i][j], list[v[i][j]].data); // 输出上一个结点的next,也就是当前结点v[i][j]。接着输出下一个结点。 </span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> printf("-1"); // 最后一个结点的next </span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1076-Wifi密码-(15-分)"><a href="#1076-Wifi密码-(15-分)" class="headerlink" title="1076 Wifi密码 (15 分)"></a>1076 Wifi密码 (15 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805262622244864" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805262622244864</a></p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<string></span><br><span class="line">#include<iostream></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> int n;</span><br><span class="line"> </span><br><span class="line"> scanf("%d", &n);</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> for (int j = 0; j < 4; j++) {</span><br><span class="line"> string str;</span><br><span class="line"> char a, b;</span><br><span class="line"> cin >> str;</span><br><span class="line"> a = str[0];</span><br><span class="line"> b = str[2];</span><br><span class="line"> if (b == 'T') {</span><br><span class="line"> if (a == 'A') {</span><br><span class="line"> printf("1"); </span><br><span class="line"> }</span><br><span class="line"> if (a == 'B') {</span><br><span class="line"> printf("2");</span><br><span class="line"> }</span><br><span class="line"> if (a == 'C') {</span><br><span class="line"> printf("3");</span><br><span class="line"> }</span><br><span class="line"> if (a == 'D') {</span><br><span class="line"> printf("4");</span><br><span class="line"> }</span><br><span class="line"> } </span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1077-互评成绩计算-(20-分)"><a href="#1077-互评成绩计算-(20-分)" class="headerlink" title="1077 互评成绩计算 (20 分)"></a>1077 互评成绩计算 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805262303477760" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805262303477760</a></p>
<p>注意点:注意其四舍五入的方式。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include <iostream></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">int main() {</span><br><span class="line"> </span><br><span class="line"> int n, m;</span><br><span class="line"> </span><br><span class="line"> cin >> n >> m; // 分组数与满分 </span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> </span><br><span class="line"> int g2, g1 = 0, cnt = -2, temp, maxn = -1, minn = m + 1; // cnt去除最高分与最低分 </span><br><span class="line"> </span><br><span class="line"> cin >> g2;</span><br><span class="line"> </span><br><span class="line"> for (int j = 0; j < n-1; j++) {</span><br><span class="line"> cin >> temp;</span><br><span class="line"> if (temp >= 0 && temp <= m) {</span><br><span class="line"> if (temp > maxn) maxn = temp;</span><br><span class="line"> if (temp < minn) minn = temp;</span><br><span class="line"> g1 += temp;</span><br><span class="line"> cnt++;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> cout << int((((g1 - minn - maxn) * 1.0 / cnt) + g2) / 2 + 0.5) << endl;</span><br><span class="line"> }</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1078-字符串压缩与解压-(20-分)"><a href="#1078-字符串压缩与解压-(20-分)" class="headerlink" title="1078 字符串压缩与解压 (20 分)"></a>1078 字符串压缩与解压 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805262018265088" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805262018265088</a></p>
<p>注意点:dev-c++ 工具-编译选项-编译器-编译 -std=c++11,stoi的用法。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<iostream></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">int main() {</span><br><span class="line"> </span><br><span class="line"> char t;</span><br><span class="line"> cin >> t;</span><br><span class="line"> </span><br><span class="line"> getchar();</span><br><span class="line"> string s, num;</span><br><span class="line"> getline(cin, s);</span><br><span class="line"> </span><br><span class="line"> int cnt = 1;</span><br><span class="line"> </span><br><span class="line"> if (t == 'D') { // 解压</span><br><span class="line"> for (int i = 0; i < s.length(); i++) {</span><br><span class="line"> if (s[i] >= '0' && s[i] <= '9') {</span><br><span class="line"> num += s[i];</span><br><span class="line"> } else {</span><br><span class="line"> if (num.length() > 0) cnt = stoi(num); // string num 转化为 int cnt </span><br><span class="line"> while(cnt--) cout << s[i];</span><br><span class="line"> cnt = 1;</span><br><span class="line"> num = "";</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> } else if (t == 'C') { // 压缩</span><br><span class="line"> char pre = s[0]; // 前一个 </span><br><span class="line"> for (int i = 1; i < s.length(); i++) {</span><br><span class="line"> if (s[i] == pre) { // 是否等于前一个 </span><br><span class="line"> cnt++;</span><br><span class="line"> } else {</span><br><span class="line"> if (cnt >= 2) cout << cnt;</span><br><span class="line"> cout << pre;</span><br><span class="line"> cnt = 1;</span><br><span class="line"> pre = s[i];</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> // 结尾扫描存储下来的cnt和pre,记得输出 </span><br><span class="line"> if (cnt >= 2) cout << cnt;</span><br><span class="line"> cout << pre;</span><br><span class="line"> }</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1079-延迟的回文数-(20-分)"><a href="#1079-延迟的回文数-(20-分)" class="headerlink" title="1079 延迟的回文数 (20 分)***"></a>1079 延迟的回文数 (20 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805261754023936" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805261754023936</a></p>
<p>注意点:重点在于其中的相加,需要使用大整数相加的想法。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include <iostream></span><br><span class="line">#include <algorithm></span><br><span class="line">#include<string></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">// 与大整数相加类似 </span><br><span class="line">string add(string a) {</span><br><span class="line"> string b = a, ans;</span><br><span class="line"> reverse(b.begin(), b.end());</span><br><span class="line"> int len = a.length(), carry = 0;</span><br><span class="line"> for (int i = 0; i < len; i++) {</span><br><span class="line"> int num = (a[i] - '0' + b[i] - '0') + carry;</span><br><span class="line"> carry = 0;</span><br><span class="line"> if (num >= 10) {</span><br><span class="line"> carry = 1;</span><br><span class="line"> num = num - 10;</span><br><span class="line"> }</span><br><span class="line"> ans += char(num + '0');</span><br><span class="line"> }</span><br><span class="line"> if(carry == 1) ans += '1';</span><br><span class="line"> reverse(ans.begin(), ans.end());</span><br><span class="line"> return ans;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">int main() {</span><br><span class="line"> string s;</span><br><span class="line"> cin >> s;</span><br><span class="line"> </span><br><span class="line"> int cnt = 0;</span><br><span class="line"> while (cnt < 10) {</span><br><span class="line"> </span><br><span class="line"> string t = s;</span><br><span class="line"> reverse(t.begin(), t.end()); // 将s翻转 </span><br><span class="line"> </span><br><span class="line"> if (t == s) {</span><br><span class="line"> cout << s << " is a palindromic number.";</span><br><span class="line"> break;</span><br><span class="line"> } else {</span><br><span class="line"> cout << s << " + " << t << " = " << add(s) << endl;</span><br><span class="line"> s = add(s);</span><br><span class="line"> cnt++;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> if (cnt == 10) cout << "Not found in 10 iterations.";</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1080-MOOC期终成绩-(25-分)"><a href="#1080-MOOC期终成绩-(25-分)" class="headerlink" title="1080 MOOC期终成绩 (25 分)"></a>1080 MOOC期终成绩 (25 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805261493977088" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805261493977088</a></p>
<p>注意点:</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">62</span><br></pre></td><td class="code"><pre><span class="line">#include <iostream></span><br><span class="line">#include <algorithm></span><br><span class="line">#include <vector></span><br><span class="line">#include <map></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">struct node {</span><br><span class="line"> string name;</span><br><span class="line"> int gp, gm, gf, g; // 在线编程成绩,期中考试成绩,期末考试成绩,总评 </span><br><span class="line">};</span><br><span class="line"></span><br><span class="line">bool cmp(node a, node b) {</span><br><span class="line"> return a.g != b.g ? a.g > b.g : a.name < b.name; // 总分递减,总分相同则姓名递增 </span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">map<string, int> idx; // 名字与在v中顺序的对应关系 </span><br><span class="line"></span><br><span class="line">int main() {</span><br><span class="line"> </span><br><span class="line"> int p, m, n, score, cnt = 1;</span><br><span class="line"> cin >> p >> m >> n; // P(做了在线编程作业的学生数)、M(参加了期中考试的学生数)、N(参加了期末考试的学生数)</span><br><span class="line"> </span><br><span class="line"> vector<node> v, ans;</span><br><span class="line"> string s;</span><br><span class="line"> </span><br><span class="line"> // p个在线编程成绩 </span><br><span class="line"> for (int i = 0; i < p; i++) {</span><br><span class="line"> cin >> s >> score;</span><br><span class="line"> if (score >= 200) {</span><br><span class="line"> v.push_back(node{s, score, -1, -1, 0}); // struct顺序初始化方式</span><br><span class="line"> idx[s] = cnt++;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> // m个期中考试成绩 </span><br><span class="line"> for (int i = 0; i < m; i++) {</span><br><span class="line"> cin >> s >> score;</span><br><span class="line"> if (idx[s] != 0) v[idx[s] - 1].gm = score;</span><br><span class="line"> }</span><br><span class="line"> // n个期末考试成绩 </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> cin >> s >> score;</span><br><span class="line"> if (idx[s] != 0) {</span><br><span class="line"> int temp = idx[s] - 1;</span><br><span class="line"> v[temp].gf = v[temp].g = score;</span><br><span class="line"> if (v[temp].gm > v[temp].gf) v[temp].g = int(v[temp].gm * 0.4 + v[temp].gf * 0.6 + 0.5); // 计算总评 </span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> // 总评超过60的即为答案 </span><br><span class="line"> for (int i = 0; i < v.size(); i++) {</span><br><span class="line"> if (v[i].g >= 60) ans.push_back(v[i]);</span><br><span class="line"> }</span><br><span class="line"> // 按照cmp规则排序 </span><br><span class="line"> sort(ans.begin(), ans.end(), cmp);</span><br><span class="line"> // 输出 </span><br><span class="line"> for (int i = 0; i < ans.size(); i++) {</span><br><span class="line"> printf("%s %d %d %d %d\n", ans[i].name.c_str(), ans[i].gp, ans[i].gm, ans[i].gf, ans[i].g);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1081-检查密码-(15-分)"><a href="#1081-检查密码-(15-分)" class="headerlink" title="1081 检查密码 (15 分)***"></a>1081 检查密码 (15 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805261217153024" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805261217153024</a></p>
<p>注意点:一定要注意当需要一整行的时候,一行有可能出现空格的情况,需要使用getline,而使用getline,需要注意开头空格的情况。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include<cstdio></span><br><span class="line">#include<iostream></span><br><span class="line">#include<string></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">string check (string str) {</span><br><span class="line"> string ans;</span><br><span class="line"> bool a = false, b = false, c = false; // 字母,数字,其他 </span><br><span class="line"> // 太短 </span><br><span class="line"> if (str.size() < 6) {</span><br><span class="line"> ans = "Your password is tai duan le.";</span><br><span class="line"> return ans;</span><br><span class="line"> }</span><br><span class="line"> for (int i = 0; i < str.size(); i++) {</span><br><span class="line"> </span><br><span class="line"> if (str[i] >= 'a' && str[i] <= 'z' || str[i] >= 'A' && str[i] <= 'Z') { // 字母 </span><br><span class="line"> a = true; </span><br><span class="line"> }</span><br><span class="line"> else if (str[i] >= '0' && str[i] <= '9') { // 数字 </span><br><span class="line"> b = true; </span><br><span class="line"> }</span><br><span class="line"> else if (str[i] == '.') { // 小数点 </span><br><span class="line"> </span><br><span class="line"> } else { // 其他 </span><br><span class="line"> c = true;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> if (c) {</span><br><span class="line"> ans = "Your password is tai luan le.";</span><br><span class="line"> }</span><br><span class="line"> if (!b && a) {</span><br><span class="line"> ans = "Your password needs shu zi.";</span><br><span class="line"> } </span><br><span class="line"> if (!a && b) {</span><br><span class="line"> ans = "Your password needs zi mu.";</span><br><span class="line"> }</span><br><span class="line"> if (!c && b && a) {</span><br><span class="line"> ans = "Your password is wan mei.";</span><br><span class="line"> }</span><br><span class="line"> return ans;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">main () {</span><br><span class="line"> </span><br><span class="line"> int n;</span><br><span class="line"> scanf("%d", &n); </span><br><span class="line"> </span><br><span class="line"> getchar(); // 空格 </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> string str;</span><br><span class="line"> getline(cin, str);</span><br><span class="line"> string ans = check(str);</span><br><span class="line"> cout << ans << endl;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0; </span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1082-射击比赛-(20-分)"><a href="#1082-射击比赛-(20-分)" class="headerlink" title="1082 射击比赛 (20 分)"></a>1082 射击比赛 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805260990660608" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805260990660608</a></p>
<p>注意点:只需要平方和就可以了。</p>
<p>答案:</p>
<figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">#include <iostream></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">int main() {</span><br><span class="line"> </span><br><span class="line"> int n, id, x, y, maxid, maxdis = -1, minid, mindis = 99999;</span><br><span class="line"> </span><br><span class="line"> cin >> n;</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < n; i++) {</span><br><span class="line"> </span><br><span class="line"> cin >> id >> x >> y;</span><br><span class="line"> </span><br><span class="line"> int dis = x * x + y * y;</span><br><span class="line"> </span><br><span class="line"> if (dis > maxdis) maxid = id;</span><br><span class="line"> if (dis < mindis) minid = id;</span><br><span class="line"> </span><br><span class="line"> maxdis = max(maxdis, dis);</span><br><span class="line"> mindis = min(mindis, dis);</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> printf("%04d %04d", minid, maxid);</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1083-是否存在相等的差-(20-分)"><a href="#1083-是否存在相等的差-(20-分)" class="headerlink" title="1083 是否存在相等的差 (20 分)"></a>1083 是否存在相等的差 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805260780945408" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805260780945408</a></p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include <iostream></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">int main() {</span><br><span class="line"> </span><br><span class="line"> int n, t, a[10000] = { 0 };</span><br><span class="line"> </span><br><span class="line"> cin >> n;</span><br><span class="line"> for (int i = 1; i <= n; i++) {</span><br><span class="line"> </span><br><span class="line"> cin >> t;</span><br><span class="line"> </span><br><span class="line"> a[abs(t-i)]++;</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> for (int i = 9999; i >= 0; i--) {</span><br><span class="line"> if (a[i] >= 2) cout << i << " " << a[i] << endl;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1084-外观数列-(20-分)"><a href="#1084-外观数列-(20-分)" class="headerlink" title="1084 外观数列 (20 分)"></a>1084 外观数列 (20 分)</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805260583813120" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805260583813120</a></p>
<p>注意点:to_string的用法,for的别样用法。</p>
<p>答案:</p>
<figure class="highlight plain"><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><span class="line">#include <iostream></span><br><span class="line"></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">int main() {</span><br><span class="line"> string s;</span><br><span class="line"> int n, j;</span><br><span class="line"> </span><br><span class="line"> cin >> s >> n; // 求s的第n项 </span><br><span class="line"> </span><br><span class="line"> for (int cnt = 1; cnt < n; cnt++) {</span><br><span class="line"> </span><br><span class="line"> string t;</span><br><span class="line"> </span><br><span class="line"> for (int i = 0; i < s.length(); i = j) {</span><br><span class="line"> </span><br><span class="line"> // 从i开始到j为相同的s[i] </span><br><span class="line"> for (j = i; j < s.length() && s[j] == s[i]; j++);</span><br><span class="line"> </span><br><span class="line"> t += s[i] + to_string(j - i);</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> s = t; // 当前的s </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> cout << s;</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="1085-PAT单位排行-(25-分)"><a href="#1085-PAT单位排行-(25-分)" class="headerlink" title="1085 PAT单位排行 (25 分)***"></a>1085 PAT单位排行 (25 分)***</h2><p><a href="https://pintia.cn/problem-sets/994805260223102976/problems/994805260353126400" target="_blank" rel="noopener">https://pintia.cn/problem-sets/994805260223102976/problems/994805260353126400</a></p>
<p>注意点:cctype其中一些处理字符串的函数。还有一个很重要的,就是遍历map的方式。</p>