problemscpp
A collection of my answers to algorithm problems in c++.
luogu.cpp
浏览该文件的文档.
1#include "luogu.h"
2
3#include <algorithm>
4#include <array>
5#include <cmath>
6#include <cstring>
7#include <deque>
8#include <iomanip>
9#include <numeric>
10#include <set>
11#include <sstream>
12#include <unordered_map>
13#include <unordered_set>
14#include <vector>
15
16using namespace std;
17
18namespace luogu {
19 int P1001::main(istream &cin, ostream &cout) {
20 unsigned int a;
21 unsigned int b;
22 cin >> a >> b;
23 cout << a + b;
24 return 0;
25 }
26
27 int P1000::main(istream & /*cin*/, ostream &cout) {
28 cout << " ********\n"
29 " ************\n"
30 " ####....#.\n"
31 " #..###.....##....\n"
32 " ###.......###### ### ###\n"
33 " ........... #...# #...#\n"
34 " ##*####### #.#.# #.#.#\n"
35 " ####*******###### #.#.# #.#.#\n"
36 " ...#***.****.*###.... #...# #...#\n"
37 " ....**********##..... ### ###\n"
38 " ....**** *****....\n"
39 " #### ####\n"
40 " ###### ######\n"
41 "##############################################################\n"
42 "#...#......#.##...#......#.##...#......#.##------------------#\n"
43 "###########################################------------------#\n"
44 "#..#....#....##..#....#....##..#....#....#####################\n"
45 "########################################## #----------#\n"
46 "#.....#......##.....#......##.....#......# #----------#\n"
47 "########################################## #----------#\n"
48 "#.#..#....#..##.#..#....#..##.#..#....#..# #----------#\n"
49 "########################################## ############";
50 return 0;
51 }
52
53 int P1008::main(istream & /*cin*/, ostream &cout) {
54 for(unsigned short i = 1; i <= 3; i++) {
55 for(unsigned short j = 1; j <= 9; j++) {
56 if(j == i) {
57 continue;
58 }
59 for(unsigned short k = 1; k <= 9; k++) {
60 if(k == i || k == j || k * 2 % 10 == j || k * 2 % 10 == i || k * 3 % 10 == j || k * 3 % 10 == i || k == 5) {
61 continue;
62 }
63 const unsigned short num = 100 * i + 10 * j + k;
64 if(num > 333) {
65 continue;
66 }
67 unsigned short num2 = 2 * num;
68 unsigned short num3 = 3 * num;
69 auto um = unordered_set<unsigned short>();
70 um.insert(i);
71 um.insert(j);
72 um.insert(k);
73 unsigned short n = num2 % 10;
74
75 if(um.contains(n) || n == 0) {
76 continue;
77 }
78 um.insert(n);
79 num2 /= 10;
80 n = num2 % 10;
81 if(um.contains(n) || n == 0) {
82 continue;
83 }
84 um.insert(n);
85 num2 /= 10;
86 n = num2 % 10;
87 if(um.contains(n) || n == 0) {
88 continue;
89 }
90 um.insert(n);
91
92 n = num3 % 10;
93 if(um.contains(n) || n == 0) {
94 continue;
95 }
96 um.insert(n);
97 num3 /= 10;
98 n = num3 % 10;
99 if(um.contains(n) || n == 0) {
100 continue;
101 }
102 um.insert(n);
103 num3 /= 10;
104 n = num3 % 10;
105 if(um.contains(n) || n == 0) {
106 continue;
107 }
108 um.insert(n);
109 cout << num << " " << num * 2 << " " << num * 3 << endl;
110 }
111 }
112 }
113 return 0;
114 }
115
116 int P1002::main(istream &cin, ostream &cout) {
117 int n;
118 int m;
119 int cx;
120 int cy;
121 cin >> n >> m >> cx >> cy;
122 unsigned long long board[21][21] = {};
123 board[0][0] = 1;
124 for(int i = 0; i <= n; i++) {
125 for(int j = 0; j <= m; j++) {
126 if(abs(cx - i) * abs(cy - j) == 2 || i == cx && j == cy) {
127 board[i][j] = 0;
128 continue;
129 }
130 if(i - 1 >= 0) {
131 board[i][j] += board[i - 1][j];
132 }
133 if(j - 1 >= 0) {
134 board[i][j] += board[i][j - 1];
135 }
136 }
137 }
138 cout << board[n][m];
139 return 0;
140 }
141
142 int P1003::main(istream &cin, ostream &cout) {
143 auto as = vector<unsigned int>();
144 auto bs = vector<unsigned int>();
145 auto gs = vector<unsigned int>();
146 auto ks = vector<unsigned int>();
147 int n;
148 cin >> n;
149 for(int i = 0; i < n; i++) {
150 unsigned int a;
151 unsigned int b;
152 unsigned int g;
153 unsigned int k;
154 cin >> a >> b >> g >> k;
155 as.push_back(a);
156 bs.push_back(b);
157 gs.push_back(g);
158 ks.push_back(k);
159 }
160 unsigned int x;
161 unsigned int y;
162 cin >> x >> y;
163 for(int i = n - 1; i >= 0; i--) {
164 if(as[i] <= x && x <= as[i] + gs[i] && bs[i] <= y && y <= bs[i] + ks[i]) {
165 cout << i + 1;
166 return 0;
167 }
168 }
169 cout << -1;
170 return 0;
171 }
172
173 int P5703::main(istream &cin, ostream &cout) {
174 unsigned long a;
175 unsigned long b;
176 cin >> a >> b;
177 cout << a * b;
178 return 0;
179 }
180
181 int P5704::main(istream &cin, ostream &cout) {
182 char ch;
183 cin >> ch;
184 cout << static_cast<char>(toupper(ch));
185 return 0;
186 }
187
188 int P5705::main(istream &cin, ostream &cout) {
189 string s;
190 cin >> s;
191 for(int i = s.length() - 1; i >= 0; i--) {
192 cout << s[i];
193 }
194 return 0;
195 }
196
197 int P5706::main(istream &cin, ostream &cout) {
198 double t;
199 int n;
200 cin >> t >> n;
201 cout << setiosflags(ios::fixed) << setprecision(3) << t / n << endl
202 << n * 2;
203 return 0;
204 }
205
206 int P1425::main(istream &cin, ostream &cout) {
207 int a;
208 int b;
209 int c;
210 int d;
211 cin >> a >> b >> c >> d;
212 const int diff = (c - a) * 60 + d - b;
213 cout << diff / 60 << " " << diff % 60;
214 return 0;
215 }
216
217 int P2433::main(istream &cin, ostream &cout) {
218 int T;
219 cin >> T;
220 if(T == 1) {
221 cout << "I love Luogu!";
222 } else if(T == 2) {
223 cout << 2 + 4 << " " << 10 - 2 - 4;
224 } else if(T == 3) {
225 cout << 14 / 4 << endl
226 << 14 / 4 * 4 << endl
227 << 14 % 4;
228 } else if(T == 4) {
229 cout << setiosflags(ios::fixed) << setprecision(3) << 500.0 / 3.0;
230 } else if(T == 5) {
231 cout << (260 + 220) / (12 + 20);
232 } else if(T == 6) {
233 cout << sqrt(6 * 6 + 9 * 9);
234 } else if(T == 7) {
235 int deposit = 100;
236 deposit += 10;
237 cout << deposit << endl;
238 deposit -= 20;
239 cout << deposit << endl;
240 deposit = 0;
241 cout << deposit << endl;
242 } else if(T == 8) {
243 cout << 2 * 5 * 3.141593 << endl;
244 cout << 5 * 5 * 3.141593 << endl;
245 cout << 4 * 5 * 5 * 5 * 3.141593 / 3 << endl;
246 } else if(T == 9) {
247 const int peach = 1;
248 cout << (((peach + 1) * 2 + 1) * 2 + 1) * 2;
249 } else if(T == 10) {
250 cout << 90 / 10;
251 } else if(T == 11) {
252 cout << 100.0 / 3.0;
253 } else if(T == 12) {
254 cout << 'M' - 'A' + 1 << endl;
255 cout << static_cast<char>('A' - 1 + 18);
256 } else if(T == 13) {
257 const double r1 = 4;
258 const double r2 = 10;
259 const double v1 = 4 * r1 * r1 * r1 * 3.141593 / 3;
260 const double v2 = 4 * r2 * r2 * r2 * 3.141593 / 3;
261 cout << static_cast<int>(pow(v1 + v2, 1.0 / 3.0));
262 } else if(T == 14) {
263 cout << 50;
264 }
265 return 0;
266 }
267
268 int P5708::main(istream &cin, ostream &cout) {
269 double a;
270 double b;
271 double c;
272 cin >> a >> b >> c;
273 const double p = (a + b + c) / 2;
274 cout << setiosflags(ios::fixed) << setprecision(1) << sqrt(p * (p - a) * (p - b) * (p - c));
275 return 0;
276 }
277
278 int P1421::main(istream &cin, ostream &cout) {
279 int a;
280 int b;
281 cin >> a >> b;
282 cout << (10 * a + b) / 19;
283 return 0;
284 }
285
286 int P5709::main(istream &cin, ostream &cout) {
287 int m;
288 int t;
289 int s;
290 cin >> m >> t >> s;
291 if(t == 0) {
292 cout << 0;
293 return 0;
294 }
295 int eaten = s / t;
296 if(t * eaten != s) {
297 eaten++;
298 }
299 cout << max(0, m - eaten);
300 return 0;
301 }
302
303 int P2181::main(istream &cin, ostream &cout) {
304 unsigned long long n;
305 unsigned long long count = 0;
306 cin >> n;
307 for(long long i = 1; i <= n - 2; i++) {
308 count += i * (n - 2 - i);
309 }
310 count *= n;
311 count /= 4;
312 cout << count;
313 return 0;
314 }
315
316 int P5707::main(istream &cin, ostream &cout) {
317 unsigned int s;
318 unsigned int v;
319 cin >> s >> v;
320 double t = 8 * 60 - (static_cast<double>(s) / static_cast<double>(v) + 10);
321 if(t < 0) {
322 t += 24 * 60;
323 }
324 const int h = static_cast<int>(t / 60);
325 const int m = static_cast<int>(t) % 60;
326 if(h < 10) {
327 cout << 0;
328 }
329 cout << h << ":";
330 if(m < 10) {
331 cout << 0;
332 }
333 cout << m;
334 return 0;
335 }
336
337 int P3954::main(istream &cin, ostream &cout) {
338 unsigned short a;
339 unsigned short b;
340 unsigned short c;
341 cin >> a >> b >> c;
342 cout << (a * 2 + b * 3 + c * 5) / 10;
343 return 0;
344 }
345
346 int P5710::main(istream &cin, ostream &cout) {
347 unsigned short x;
348 cin >> x;
349 const bool b1 = x % 2 == 0;
350 const bool b2 = x > 4 && x <= 12;
351 cout << static_cast<int>(b1 && b2) << " " << static_cast<int>(b1 || b2) << " " << (b1 xor b2) << " " << static_cast<int>(!b1 && !b2);
352 return 0;
353 }
354
355 int P5711::main(istream &cin, ostream &cout) {
356 unsigned int year;
357 cin >> year;
358 if(year % 4 == 0) {
359 //是4的倍数
360 if(year % 100 == 0) {
361 //是100的倍数
362 if(year % 400 == 0) {
363 //是400的倍数
364 cout << "1";
365 return 0;
366 }
367 //不是400的倍数
368 cout << "0";
369 return 0;
370 }
371 //不是100的倍数
372 cout << "1";
373 return 0;
374 }
375 //不是4的倍数
376 cout << "0";
377 return 0;
378 }
379
380 int P5712::main(istream &cin, ostream &cout) {
381 unsigned short x;
382 cin >> x;
383 cout << "Today, I ate " << x << " apple";
384 if(x > 1) {
385 cout << "s";
386 }
387 cout << ".";
388 return 0;
389 }
390
391 int P5713::main(istream &cin, ostream &cout) {
392 unsigned int n;
393 cin >> n;
394 const unsigned int local = n * 5;
395 const unsigned int luogu = 11 + 3 * n;
396 if(local < luogu) {
397 cout << "Local";
398 } else {
399 cout << "Luogu";
400 }
401 return 0;
402 }
403
404 int P5715::main(istream &cin, ostream &cout) {
405 unsigned int abc[3];
406 cin >> abc[0] >> abc[1] >> abc[2];
407 sort(abc, abc + 3);
408 for(const auto i: abc) {
409 cout << i << " ";
410 }
411 return 0;
412 }
413
414 int P5714::main(istream &cin, ostream &cout) {
415 double m;
416 double n;
417 cin >> m >> n;
418 const double bmi = m / (n * n);
419 if(bmi < 18.5) {
420 cout << "Underweight";
421 } else if(bmi >= 18.5 && bmi < 24) {
422 cout << "Normal";
423 } else {
424 cout << bmi << endl
425 << "Overweight";
426 }
427 return 0;
428 }
429
430 int P5716::main(istream &cin, ostream &cout) {
431 int year;
432 int month;
433 cin >> year >> month;
434 const bool bissextile = year % 400 == 0 || year % 4 == 0 && year % 100 != 0;
435 if(month == 4 || month == 6 || month == 9 || month == 11) {
436 cout << 30;
437 } else if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
438 cout << 31;
439 } else if(bissextile) {
440 cout << 29;
441 } else {
442 cout << 28;
443 }
444 return 0;
445 }
446
447 int P1085::main(istream &cin, ostream &cout) {
448 unsigned short a;
449 unsigned short b;
450 unsigned int maximum = 0;
451 unsigned int maximum_i = 0;
452 unsigned int i = 0;
453 while(cin >> a && cin >> b) {
454 i++;
455 if(a + b > 8 && a + b > maximum) {
456 maximum_i = i;
457 maximum = a + b;
458 }
459 }
460 cout << maximum_i;
461 return 0;
462 }
463
464 int P1909::main(istream &cin, ostream &cout) {
465 int n;
466 cin >> n;
467 int num;
468 int price;
469 int minimum = -1;
470 for(int i = 0; i < 3; i++) {
471 cin >> num >> price;
472 int count = n / num;
473 if(n % num != 0) {
474 count++;
475 }
476 int sum = count * price;
477 minimum = minimum == -1 ? sum : min(minimum, sum);
478 }
479 cout << minimum;
480 return 0;
481 }
482
483 int P1055::main(istream &cin, ostream &cout) {
484 string isbn;
485 cin >> isbn;
486 const string isbn_prefix = isbn.substr(0, isbn.length() - 1);
487 int sum = 0;
488 int count = 1;
489 for(const char ch: isbn_prefix) {
490 if(isdigit(ch) != 0) {
491 sum += (ch - '0') * count++;
492 sum %= 11;
493 }
494 }
495 sum %= 11;
496 int end = *isbn.rbegin() - '0';
497 if(end == 'X' - '0') {
498 end = 10;
499 }
500 if(sum == end) {
501 cout << "Right";
502 } else {
503 end = sum;
504 if(sum == 10) {
505 end = 'X' - '0';
506 }
507 cout << isbn_prefix << static_cast<char>(end + '0');
508 }
509 return 0;
510 }
511
512 int P1422::main(istream &cin, ostream &cout) {
513 double fee = 0;
514 int power;
515 cin >> power;
516 cout << setiosflags(ios::fixed) << setprecision(1);
517 if(power <= 150) {
518 fee = power * 0.4463;
519 } else if(power <= 400) {
520 fee = 150 * 0.4463 + (power - 150) * 0.4663;
521 } else {
522 fee = 150 * 0.4463 + (400 - 150) * 0.4663 + (power - 400) * 0.5663;
523 }
524 cout << floor(fee * 10 + 0.5) / 10;
525 return 0;
526 }
527
528 int P1424::main(istream &cin, ostream &cout) {
529 unsigned short x;
530 unsigned int n;
531 cin >> x >> n;
532 x--;
533 unsigned int count = n / 7 * 5 * 250;
534 n %= 7;
535 for(unsigned int i = 0; i < n; i++) {
536 if((x + i) % 7 < 5) {
537 count += 250;
538 }
539 }
540 cout << count;
541 return 0;
542 }
543
544 int P1888::main(istream &cin, ostream &cout) {
545 int a;
546 int b;
547 int c;
548 cin >> a >> b >> c;
549 int maximum = a;
550 int minimum = a;
551 maximum = max(maximum, b);
552 maximum = max(maximum, c);
553 minimum = min(minimum, b);
554 minimum = min(minimum, c);
555 const int g = gcd(maximum, minimum);
556 cout << minimum / g << "/" << maximum / g;
557 return 0;
558 }
559
560 int P1888::gcd(int m, int n) {
561 int r = m;
562 while(r != 0) {
563 r = m % n;
564 m = n;
565 n = r;
566 }
567 return m;
568 }
569
570 int P1046::main(istream &cin, ostream &cout) {
571 int h[10];
572 for(int &i: h) {
573 cin >> i;
574 }
575 int t;
576 cin >> t;
577 t += 30;
578 int count = 0;
579 for(const int i: h) {
580 if(t >= i) {
581 count++;
582 }
583 }
584 cout << count;
585 return 0;
586 }
587
588 int P5717::main(istream &cin, ostream &cout) {
589 unsigned int e[3];
590 cin >> e[0] >> e[1] >> e[2];
591 sort(e, e + 3);
592 if(e[0] + e[1] <= e[2]) {
593 cout << "Not triangle" << endl;
594 } else {
595 const unsigned int e02 = e[0] * e[0];
596 const unsigned int e12 = e[1] * e[1];
597 const unsigned int e22 = e[2] * e[2];
598 if(e02 + e12 == e[2] * e[2]) {
599 cout << "Right triangle" << endl;
600 } else if(e02 + e12 > e22) {
601 cout << "Acute triangle" << endl;
602 } else if(e02 + e12 < e22) {
603 cout << "Obtuse triangle" << endl;
604 }
605 if(e[0] == e[1]) {
606 cout << "Isosceles triangle" << endl;
607 if(e[1] == e[2]) {
608 cout << "Equilateral triangle" << endl;
609 }
610 }
611 }
612 return 0;
613 }
614
615 int P4414::main(istream &cin, ostream &cout) {
616 unsigned int num[3];
617 cin >> num[0] >> num[1] >> num[2];
618 unsigned a = 100;
619 unsigned b;
620 unsigned c = 0;
621 for(const unsigned int i: num) {
622 if(a > i) {
623 a = i;
624 }
625 if(c < i) {
626 c = i;
627 }
628 }
629 for(const unsigned int i: num) {
630 if(i != a && i != c) {
631 b = i;
632 }
633 }
634 char ch;
635 for(int i = 0; i < 3; i++) {
636 cin >> ch;
637 if(ch == 'A') {
638 cout << a << " ";
639 } else if(ch == 'B') {
640 cout << b << " ";
641 } else {
642 cout << c << " ";
643 }
644 }
645 return 0;
646 }
647
648 int P5718::main(istream &cin, ostream &cout) {
649 int n;
650 cin >> n;
651 int minimum = 1000;
652 int a;
653 for(int i = 0; i < n; i++) {
654 cin >> a;
655 minimum = min(minimum, a);
656 }
657 cout << minimum;
658 return 0;
659 }
660
661 int P5719::main(istream &cin, ostream &cout) {
662 int n;
663 int k;
664 cin >> n >> k;
665 int sum_a = 0;
666 int count_a = 0;
667 int sum_b = 0;
668 int count_b = 0;
669 for(int i = 1; i <= n; i++) {
670 if(i % k == 0) {
671 sum_a += i;
672 count_a++;
673 } else {
674 sum_b += i;
675 count_b++;
676 }
677 }
678 cout << fixed << setprecision(1) << static_cast<double>(sum_a) / static_cast<double>(count_a) << " " << static_cast<double>(sum_b) / static_cast<double>(count_b);
679 return 0;
680 }
681
682 int P5720::main(istream &cin, ostream &cout) {
683 int n;
684 cin >> n;
685 int i = 1;
686 while(n != 1) {
687 n >>= 1;
688 i++;
689 }
690 cout << i;
691 return 0;
692 }
693
694 int P5721::main(istream &cin, ostream &cout) {
695 int n;
696 cin >> n;
697 int count = 1;
698 for(int i = n; i >= 1; i--) {
699 for(int j = 0; j < i; j++) {
700 cout << setw(2) << setfill('0') << right << count++;
701 }
702 cout << endl;
703 }
704 return 0;
705 }
706
707 int P1009::main(istream &cin, ostream &cout) {
708 int n;
709 cin >> n;
710 const string ans[] = {"", "1", "3", "9", "33", "153", "873", "5913", "46233", "409113", "4037913", "43954713", "522956313", "6749977113", "93928268313", "1401602636313", "22324392524313", "378011820620313", "6780385526348313", "128425485935180313", "2561327494111820313", "53652269665821260313", "1177652997443428940313", "27029669736328405580313", "647478071469567844940313", "16158688114800553828940313", "419450149241406189412940313", "11308319599659758350180940313", "316196664211373618851684940313", "9157958657951075573395300940313", "274410818470142134209703780940313", "8497249472648064951935266660940313", "271628086406341595119153278820940313", "8954945705218228090637347680100940313", "304187744744822368938255957323620940313", "10637335711130967298604907294846820940313", "382630662501032184766604355445682020940313", "14146383753727377231082583937026584420940313", "537169001220328488991089808037100875620940313", "20935051082417771847631371547939998232420940313", "836850334330315506193242641144055892504420940313", "34289376947494122614363304694584807557656420940313", "1439295494700374021157505910939096377494040420940313", "61854558558074209658512637979453093884758552420940313", "2720126133346522977702138448994068984204397080420940313", "122342346998826717539665299944651784048588130840420940313", "5624964506810915667389970728744906677010239883800420940313", "264248206017979096310354325882356886646207872272920420940313", "12678163798554051767172643373255731925167694226950680420940313", "620960027832821612639424806694551108812720525606160920420940313", "31035053229546199656252032972759319953190362094566672920420940313"};
711 cout << ans[n];
712 return 0;
713 }
714
715 int P1980::main(istream &cin, ostream &cout) {
716 int n;
717 char x;
718 cin >> n >> x;
719 auto oss = ostringstream();
720 for(int i = 1; i <= n; i++) {
721 oss << i;
722 }
723 const string str = oss.str();
724 int ans = 0;
725 for(const char ch: str) {
726 if(ch == x) {
727 ans++;
728 }
729 }
730 cout << ans;
731 return 0;
732 }
733
734 int P1035::main(istream &cin, ostream &cout) {
735 int k;
736 cin >> k;
737 int n = 1;
738 double s = 0;
739 while(s <= k) {
740 s += 1.0 / static_cast<double>(n++);
741 }
742 cout << n - 1;
743 return 0;
744 }
745
746 int P2669::main(istream &cin, ostream &cout) {
747 unsigned int k;
748 unsigned int coin = 0;
749 unsigned current = 1;
750 unsigned rest = 1;
751 cin >> k;
752 for(unsigned int i = 0; i < k; i++) {
753 if(rest == 0) {
754 current++;
755 rest = current;
756 }
757 coin += current;
758 rest--;
759 }
760 cout << coin;
761 return 0;
762 }
763
764 int P5722::main(istream &cin, ostream &cout) {
765 unsigned int n;
766 cin >> n;
767 unsigned int ans = 0;
768 for(unsigned int i = 1; i <= n; i++) {
769 ans += i;
770 }
771 cout << ans;
772 return 0;
773 }
774
775 int P5723::main(istream &cin, ostream &cout) {
776 unsigned int l;
777 unsigned int sum = 0;
778 int count = 0;
779 cin >> l;
780 for(unsigned int i = 2; i <= l; i++) {
781 bool is_prime = true;
782 for(unsigned int j = 2; j <= sqrt(i); j++) {
783 if(i % j == 0) {
784 is_prime = false;
785 break;
786 }
787 }
788 if(is_prime) {
789 sum += i;
790 if(sum <= l) {
791 cout << i << endl;
792 count++;
793 } else {
794 break;
795 }
796 }
797 }
798 cout << count << endl;
799 return 0;
800 }
801
802 int P1217::main(istream &cin, ostream &cout) {
803 unsigned int a;
804 unsigned int b;
805 cin >> a >> b;
806 auto palindromes = set<unsigned int>();
807 if(a <= 2 && 2 <= b) {
808 palindromes.insert(2);
809 }
810 if(a <= 10 && b >= 0) {
811 for(unsigned int d1 = 3; d1 <= 9; d1 += 2) {
812 //1 [0,10]
813 unsigned int palindrome = d1;
814 if(a <= palindrome && palindrome <= b) {
815 palindromes.insert(palindrome);
816 }
817 }
818 }
819 if(a <= 100 && b >= 10) {
820 for(unsigned int d1 = 1; d1 <= 9; d1 += 2) {
821 //2 [10,100]
822 unsigned int palindrome = d1 * 10 + d1;
823 if(a <= palindrome && palindrome <= b) {
824 palindromes.insert(palindrome);
825 }
826 }
827 }
828 if(a <= 1000 && b >= 100) {
829 for(unsigned int d1 = 1; d1 <= 9; d1 += 2) {
830 //3 [100,1000]
831 for(unsigned int d2 = 0; d2 <= 9; d2++) {
832 unsigned int palindrome = d1 * 100 + d2 * 10 + d1;
833 if(a <= palindrome && palindrome <= b) {
834 palindromes.insert(palindrome);
835 }
836 }
837 }
838 }
839 if(a <= 10000 && b >= 1000) {
840 for(unsigned int d1 = 1; d1 <= 9; d1 += 2) {
841 //4 [1000,10000]
842 for(unsigned int d2 = 0; d2 <= 9; d2++) {
843 unsigned int palindrome = d1 * 1000 + d2 * 100 + d2 * 10 + d1;
844 if(a <= palindrome && palindrome <= b) {
845 palindromes.insert(palindrome);
846 }
847 }
848 }
849 }
850 if(a <= 100000 && b >= 10000) {
851 for(unsigned int d1 = 1; d1 <= 9; d1 += 2) {
852 //5 [10000,100000]
853 for(unsigned int d2 = 0; d2 <= 9; d2++) {
854 for(unsigned int d3 = 0; d3 <= 9; d3++) {
855 unsigned int palindrome = d1 * 10000 + 1000 * d2 + 100 * d3 + 10 * d2 + d1;
856 if(a <= palindrome && palindrome <= b) {
857 palindromes.insert(palindrome);
858 }
859 }
860 }
861 }
862 }
863 if(a <= 1000000 && b >= 100000) {
864 for(unsigned int d1 = 1; d1 <= 9; d1 += 2) {
865 //6 [100000,1000000]
866 for(unsigned int d2 = 0; d2 <= 9; d2++) {
867 for(unsigned int d3 = 0; d3 <= 9; d3++) {
868 unsigned int palindrome = d1 * 100000 + d2 * 10000 + d3 * 1000 + d3 * 100 + d2 * 10 + d1;
869 if(a <= palindrome && palindrome <= b) {
870 palindromes.insert(palindrome);
871 }
872 }
873 }
874 }
875 }
876 if(a <= 10000000 && b >= 1000000) {
877 for(unsigned int d1 = 1; d1 <= 9; d1 += 2) {
878 //7 [1000000,10000000]
879 for(unsigned int d2 = 0; d2 <= 9; d2++) {
880 for(unsigned int d3 = 0; d3 <= 9; d3++) {
881 for(unsigned int d4 = 0; d4 <= 9; d4++) {
882 unsigned int palindrome = d1 * 1000000 + d2 * 100000 + d3 * 10000 + d4 * 1000 + d3 * 100 + d2 * 10 + d1;
883 if(a <= palindrome && palindrome <= b) {
884 palindromes.insert(palindrome);
885 }
886 }
887 }
888 }
889 }
890 }
891 if(a <= 100000000 && b >= 10000000) {
892 for(unsigned int d1 = 1; d1 <= 9; d1 += 2) {
893 //8 [10000000,100000000]
894 for(unsigned int d2 = 0; d2 <= 9; d2++) {
895 for(unsigned int d3 = 0; d3 <= 9; d3++) {
896 for(unsigned int d4 = 0; d4 <= 9; d4++) {
897 unsigned int palindrome = d1 * 10000000 + d2 * 1000000 + d3 * 100000 + d4 * 10000 + d4 * 1000 + d3 * 100 + d2 * 10 + d1;
898 if(a <= palindrome && palindrome <= b) {
899 palindromes.insert(palindrome);
900 }
901 }
902 }
903 }
904 }
905 }
906 for(const auto palindrome: palindromes) {
907 bool is_prime = true;
908 for(unsigned int i = 3; i <= sqrt(palindrome); i++) {
909 if(palindrome % i == 0) {
910 is_prime = false;
911 break;
912 }
913 }
914 if(is_prime) {
915 cout << palindrome << endl;
916 }
917 }
918 return 0;
919 }
920
921 int P1423::main(istream &cin, ostream &cout) {
922 double x;
923 cin >> x;
924 double sn = 2;
925 for(int i = 1; sn < x; i++) {
926 sn = 100 * (1 - pow(0.98, i));
927 if(sn >= x) {
928 cout << i;
929 return 0;
930 }
931 }
932 return 0;
933 }
934
935 int P1307::main(istream &cin, ostream &cout) {
936 bool negative = false;
937 int n;
938 int ans = 0;
939 cin >> n;
940 if(n < 0) {
941 n = -n;
942 negative = true;
943 }
944 while(n != 0) {
945 ans *= 10;
946 ans += n % 10;
947 n /= 10;
948 }
949 if(negative) {
950 ans = -ans;
951 }
952 cout << ans;
953 return 0;
954 }
955
956 int P1720::main(istream &cin, ostream &cout) {
957 double n;
958 cin >> n;
959 cout << fixed << setprecision(2) << (pow((1 + sqrt(5)) / 2, n) - pow((1 - sqrt(5)) / 2, n)) / sqrt(5);
960 return 0;
961 }
962
963 int P5724::main(istream &cin, ostream &cout) {
964 unsigned short n;
965 cin >> n;
966 unsigned int a;
967 unsigned int maximum = 0;
968 unsigned int minimum = 1000;
969 for(unsigned short i = 0; i < n; i++) {
970 cin >> a;
971 maximum = max(maximum, a);
972 minimum = min(minimum, a);
973 }
974 cout << maximum - minimum;
975 return 0;
976 }
977
978 int P1420::main(istream &cin, ostream &cout) {
979 unsigned int n;
980 cin >> n;
981 unsigned int prev;
982 cin >> prev;
983 unsigned int a;
984 unsigned int len = 1;
985 unsigned int ans = 1;
986 for(unsigned int i = 1; i < n; i++, prev = a, ans = max(ans, len)) {
987 cin >> a;
988 if(a == prev + 1) {
989 len++;
990 } else {
991 len = 1;
992 }
993 }
994 cout << ans;
995 return 0;
996 }
997
998 int P1075::main(istream &cin, ostream &cout) {
999 int n;
1000 cin >> n;
1001 for(int i = 2; i <= sqrt(n); i++) {
1002 if(n % i == 0) {
1003 cout << n / i;
1004 return 0;
1005 }
1006 }
1007 return 0;
1008 }
1009
1010 int P5725::main(istream &cin, ostream &cout) {
1011 int n;
1012 cin >> n;
1013 for(int i = 0; i < n; i++) {
1014 for(int j = 0; j < n; j++) {
1015 cout << setw(2) << setfill('0') << right << i * n + j + 1;
1016 }
1017 cout << endl;
1018 }
1019 int count = 1;
1020 cout << endl;
1021 for(int i = 0; i < n; i++) {
1022 for(int j = 0; j < n - i - 1; j++) {
1023 cout << " ";
1024 }
1025 for(int j = 0; j < i + 1; j++) {
1026 cout << setw(2) << setfill('0') << right << count++;
1027 }
1028 cout << endl;
1029 }
1030 return 0;
1031 }
1032
1033 int P4956::main(istream &cin, ostream &cout) {
1034 int n;
1035 cin >> n;
1036 for(int k = 1; 1092 * k <= n; k++) {
1037 if((n - 1092 * k) % 364 == 0) {
1038 const int x = (n - 1092 * k) / 364;
1039 if(x < 1 || 100 < x) {
1040 continue;
1041 }
1042 cout << x << endl
1043 << k;
1044 break;
1045 }
1046 }
1047 return 0;
1048 }
1049
1050 int P5726::main(istream &cin, ostream &cout) {
1051 int n;
1052 int maximum = 0;
1053 int minimum = 10;
1054 int sum = 0;
1055 cin >> n;
1056 int score;
1057 for(int i = 0; i < n; i++) {
1058 cin >> score;
1059 sum += score;
1060 maximum = max(maximum, score);
1061 minimum = min(minimum, score);
1062 }
1063 sum -= maximum;
1064 sum -= minimum;
1065 cout << fixed << setprecision(2) << static_cast<double>(sum) / (n - 2);
1066 return 0;
1067 }
1068
1069 int P1089::main(istream &cin, ostream &cout) {
1070 int budget;
1071 int saving = 0;
1072 int current = 0;
1073 for(int i = 0; i < 12; i++) {
1074 current += 300;
1075 cin >> budget;
1076 if(current < budget) {
1077 cout << -(i + 1);
1078 return 0;
1079 }
1080 current -= budget;
1081 saving += current / 100 * 100;
1082 current %= 100;
1083 }
1084 cout << current + saving / 5 * 6;
1085 return 0;
1086 }
1087
1088
1089 int P1428::main(istream &cin, ostream &cout) {
1090 int n;
1091 cin >> n;
1092 auto *fish = new int[n];
1093 for(int i = 0; i < n; i++) {
1094 cin >> fish[i];
1095 }
1096 for(int i = 0; i < n; i++) {
1097 int count = 0;
1098 for(int j = 0; j < i; j++) {
1099 if(fish[j] < fish[i]) {
1100 count++;
1101 }
1102 }
1103 cout << count << " ";
1104 }
1105 delete[] fish;
1106 return 0;
1107 }
1108
1109 int P1427::main(istream &cin, ostream &cout) {
1110 unsigned int n;
1111 auto vec = vector<unsigned int>();
1112 while(true) {
1113 cin >> n;
1114 if(n == 0) {
1115 break;
1116 }
1117 vec.push_back(n);
1118 }
1119 for(auto i = vec.rbegin(); i != vec.rend(); ++i) {
1120 cout << *i << " ";
1121 }
1122 return 0;
1123 }
1124
1125 int P5727::main(istream &cin, ostream &cout) {
1126 int n;
1127 cin >> n;
1128 auto vec = vector<int>();
1129 while(n != 1) {
1130 vec.push_back(n);
1131 if(n % 2 != 0) {
1132 n = n * 3 + 1;
1133 } else {
1134 n /= 2;
1135 }
1136 }
1137 vec.push_back(n);
1138 for(auto i = vec.rbegin(); i != vec.rend(); ++i) {
1139 cout << *i << " ";
1140 }
1141 return 0;
1142 }
1143
1144 int P1047::main(istream &cin, ostream &cout) {
1145 int l;
1146 int m;
1147 cin >> l >> m;
1148 auto *tree = new bool[l + 1];
1149 memset(tree, 1, (l + 1) * sizeof(bool));
1150 for(int i = 0; i < m; i++) {
1151 int u;
1152 int v;
1153 cin >> u >> v;
1154 for(int j = u; j <= v; j++) {
1155 tree[j] = false;
1156 }
1157 }
1158 int ans = 0;
1159 for(int i = 0; i <= l; i++) {
1160 if(tree[i]) {
1161 ans++;
1162 }
1163 }
1164 cout << ans;
1165 delete[] tree;
1166 return 0;
1167 }
1168
1169 int P5728::main(istream &cin, ostream &cout) {
1170 int n;
1171 cin >> n;
1172 auto *students = new int *[n];
1173 for(int i = 0; i < n; i++) {
1174 students[i] = new int[3];
1175 cin >> students[i][0] >> students[i][1] >> students[i][2];
1176 }
1177 int ans = 0;
1178 for(int i = 0; i + 1 < n; i++) {
1179 int sum_i = 0;
1180 for(int k = 0; k < 3; k++) {
1181 sum_i += students[i][k];
1182 }
1183 for(int j = i + 1; j < n; j++) {
1184 bool flag = true;
1185 int sum_j = 0;
1186 for(int k = 0; k < 3; k++) {
1187 sum_j += students[j][k];
1188 if(abs(students[i][k] - students[j][k]) > 5) {
1189 flag = false;
1190 break;
1191 }
1192 }
1193 if(flag && abs(sum_i - sum_j) <= 10) {
1194 ans++;
1195 }
1196 }
1197 }
1198 cout << ans;
1199 for(int i = 0; i < n; i++) {
1200 delete[] students[i];
1201 }
1202 delete[] students;
1203 return 0;
1204 }
1205
1206 int P5729::main(istream &cin, ostream &cout) {
1207 int w;
1208 int x;
1209 int h;
1210 cin >> w >> x >> h;
1211 bool block[21][21][21] = {};
1212 memset(block, 1, sizeof block);
1213 int q;
1214 cin >> q;
1215 while(q-- != 0) {
1216 int x1;
1217 int y1;
1218 int z1;
1219 int x2;
1220 int y2;
1221 int z2;
1222 cin >> x1 >> y1 >> z1 >> x2 >> y2 >> z2;
1223 for(int i = x1; i <= x2; i++) {
1224 for(int j = y1; j <= y2; j++) {
1225 for(int k = z1; k <= z2; k++) {
1226 block[i][j][k] = false;
1227 }
1228 }
1229 }
1230 }
1231 int ans = 0;
1232 for(int i = 1; i <= w; i++) {
1233 for(int j = 1; j <= x; j++) {
1234 for(int k = 1; k <= h; k++) {
1235 if(block[i][j][k]) {
1236 ans++;
1237 }
1238 }
1239 }
1240 }
1241 cout << ans;
1242 return 0;
1243 }
1244
1245 int P2550::main(istream &cin, ostream &cout) {
1246 int n;
1247 cin >> n;
1248 bool winning_numbers[34];
1249 memset(winning_numbers, 0, sizeof winning_numbers);
1250 int prize_numbers[7];
1251 memset(prize_numbers, 0, sizeof prize_numbers);
1252 for(int i = 0; i < 7; i++) {
1253 int winning_number;
1254 cin >> winning_number;
1255 winning_numbers[winning_number] = true;
1256 }
1257 for(int i = 0; i < n; i++) {
1258 int prize_number = 7;
1259 for(int j = 0; j < 7; j++) {
1260 int lottery_number;
1261 cin >> lottery_number;
1262 if(winning_numbers[lottery_number]) {
1263 prize_number--;
1264 }
1265 }
1266 prize_numbers[prize_number]++;
1267 }
1268 for(int i = 0; i < 7; i++) {
1269 cout << prize_numbers[i] << " ";
1270 }
1271 return 0;
1272 }
1273
1274 int P2615::main(istream &cin, ostream &cout) {
1275 int n;
1276 int square[40][40];
1277 memset(square, 0, sizeof square);
1278 auto um = unordered_map<int, pair<int, int>>();
1279 cin >> n;
1280 square[0][n / 2] = 1;
1281 um[1] = make_pair(0, n / 2);
1282 for(int k = 2; k <= n * n; k++) {
1283 auto [prev_x, prev_y] = um[k - 1];
1284 if(prev_x == 0 && prev_y != n - 1) {
1285 //若 (K−1) 在第一行但不在最后一列,则将 K 填在最后一行, (K−1) 所在列的右一列;
1286 square[n - 1][prev_y + 1] = k;
1287 um[k] = make_pair(n - 1, prev_y + 1);
1288 } else if(prev_y == n - 1 && prev_x != 0) {
1289 //若 (K−1) 在最后一列但不在第一行,则将 K 填在第一列, (K−1) 所在行的上一行;
1290 square[prev_x - 1][0] = k;
1291 um[k] = make_pair(prev_x - 1, 0);
1292 } else if(prev_x == 0 && prev_y == n - 1) {
1293 //若 (K−1) 在第一行最后一列,则将 K 填在 (K−1) 的正下方;
1294 square[1][prev_y] = k;
1295 um[k] = make_pair(1, prev_y);
1296 } else if(prev_x != 0 && prev_y != n - 1) {
1297 //若 (K−1) 既不在第一行,也不在最后一列,如果 (K−1) 的右上方还未填数,则将 K 填在 (K−1) 的右上方,否则将 K 填在 (K−1) 的正下方。
1298 if(square[prev_x - 1][prev_y + 1] == 0) {
1299 square[prev_x - 1][prev_y + 1] = k;
1300 um[k] = make_pair(prev_x - 1, prev_y + 1);
1301 } else {
1302 square[prev_x + 1][prev_y] = k;
1303 um[k] = make_pair(prev_x + 1, prev_y);
1304 }
1305 }
1306 }
1307 for(int i = 0; i < n; i++) {
1308 for(int j = 0; j < n; j++) {
1309 cout << square[i][j] << " ";
1310 }
1311 cout << endl;
1312 }
1313 return 0;
1314 }
1315
1316 int P5730::main(istream &cin, ostream &cout) {
1317 int n;
1318 cin >> n;
1319 char screen[5][400];
1320 memset(screen, '.', sizeof screen);
1321 const char nums[10][5][3] = {
1322 {{'X', 'X', 'X'},
1323 {'X', '.', 'X'},
1324 {'X', '.', 'X'},
1325 {'X', '.', 'X'},
1326 {'X', 'X', 'X'}},
1327 {{'.', '.', 'X'},
1328 {'.', '.', 'X'},
1329 {'.', '.', 'X'},
1330 {'.', '.', 'X'},
1331 {'.', '.', 'X'}},
1332 {{'X', 'X', 'X'},
1333 {'.', '.', 'X'},
1334 {'X', 'X', 'X'},
1335 {'X', '.', '.'},
1336 {'X', 'X', 'X'}},
1337 {{'X', 'X', 'X'},
1338 {'.', '.', 'X'},
1339 {'X', 'X', 'X'},
1340 {'.', '.', 'X'},
1341 {'X', 'X', 'X'}},
1342 {{'X', '.', 'X'},
1343 {'X', '.', 'X'},
1344 {'X', 'X', 'X'},
1345 {'.', '.', 'X'},
1346 {'.', '.', 'X'}},
1347 {{'X', 'X', 'X'},
1348 {'X', '.', '.'},
1349 {'X', 'X', 'X'},
1350 {'.', '.', 'X'},
1351 {'X', 'X', 'X'}},
1352 {{'X', 'X', 'X'},
1353 {'X', '.', '.'},
1354 {'X', 'X', 'X'},
1355 {'X', '.', 'X'},
1356 {'X', 'X', 'X'}},
1357 {{'X', 'X', 'X'},
1358 {'.', '.', 'X'},
1359 {'.', '.', 'X'},
1360 {'.', '.', 'X'},
1361 {'.', '.', 'X'}},
1362 {{'X', 'X', 'X'},
1363 {'X', '.', 'X'},
1364 {'X', 'X', 'X'},
1365 {'X', '.', 'X'},
1366 {'X', 'X', 'X'}},
1367 {{'X', 'X', 'X'},
1368 {'X', '.', 'X'},
1369 {'X', 'X', 'X'},
1370 {'.', '.', 'X'},
1371 {'X', 'X', 'X'}}};
1372 for(int i = 0; i < n; i++) {
1373 char num;
1374 cin >> num;
1375 num -= '0';
1376 for(int j = 0; j < 5; j++) {
1377 for(int k = 0; k < 3; k++) {
1378 screen[j][k + i * 4] = nums[num][j][k];
1379 }
1380 }
1381 }
1382 for(int i = 0; i < 5; i++) {
1383 for(int j = 0; j < 4 * n - 1; j++) {
1384 cout << screen[i][j];
1385 }
1386 cout << endl;
1387 }
1388 return 0;
1389 }
1390
1391 int P1554::main(istream &cin, ostream &cout) {
1392 int nums[10] = {};
1393 int m;
1394 int n;
1395 cin >> m >> n;
1396 auto ss = stringstream();
1397 for(int i = m; i <= n; i++) {
1398 ss << i;
1399 }
1400 char ch;
1401 while(ss >> ch) {
1402 nums[ch - '0']++;
1403 }
1404 for(int i = 0; i < 10; i++) {
1405 cout << nums[i] << " ";
1406 }
1407 return 0;
1408 }
1409
1410 int P2141::main(istream &cin, ostream &cout) {
1411 int n;
1412 cin >> n;
1413 auto s = set<int>();
1414 for(int i = 0; i < n; i++) {
1415 int num;
1416 cin >> num;
1417 s.insert(num);
1418 }
1419 int ans = 0;
1420 for(auto i = s.begin(); i != s.end(); ++i) {
1421 for(auto j = s.begin(); j != i; ++j) {
1422 int sub = *i - *j;
1423 if(sub != *j && s.contains(sub)) {
1424 ans++;
1425 break;
1426 }
1427 }
1428 }
1429 cout << ans;
1430 return 0;
1431 }
1432
1433 int P1614::main(istream &cin, ostream &cout) {
1434 int n;
1435 int m;
1436 cin >> n >> m;
1437 auto *a = new int[n];
1438 for(int i = 0; i < n; i++) {
1439 cin >> a[i];
1440 }
1441 int ans = 100 * m;
1442 for(int i = 0; i + m <= n; i++) {
1443 int sum = 0;
1444 for(int j = i; j < i + m; j++) {
1445 sum += a[j];
1446 }
1447 ans = min(ans, sum);
1448 }
1449 cout << ans;
1450 delete[] a;
1451 return 0;
1452 }
1453
1454 int P2911::main(istream &cin, ostream &cout) {
1455 int s1;
1456 int s2;
1457 int s3;
1458 cin >> s1 >> s2 >> s3;
1459 const int n = s1 + s2 + s3 + 1;
1460 auto *sum = new int[n];
1461 memset(sum, 0, n * sizeof(int));
1462 for(int i = 1; i <= s1; i++) {
1463 for(int j = 1; j <= s2; j++) {
1464 for(int k = 1; k <= s3; k++) {
1465 sum[i + j + k]++;
1466 }
1467 }
1468 }
1469 int maximum = 0;
1470 int ans = 0;
1471 for(int i = 3; i < n; i++) {
1472 if(maximum < sum[i]) {
1473 maximum = sum[i];
1474 ans = i;
1475 }
1476 }
1477 cout << ans;
1478 delete[] sum;
1479 return 0;
1480 }
1481
1482 int P1161::main(istream &cin, ostream &cout) {
1483 int n;
1484 auto *lamp = new bool[2000001];
1485 memset(lamp, 0, 2000001 * sizeof(bool));
1486 cin >> n;
1487 for(int i = 0; i < n; i++) {
1488 double a;
1489 int t;
1490 cin >> a >> t;
1491 for(int j = 1; j <= t; j++) {
1492 const int at = a * j;
1493 lamp[at] = !lamp[at];
1494 }
1495 }
1496 for(int i = 0; i < 2000001; i++) {
1497 if(lamp[i]) {
1498 cout << i;
1499 break;
1500 }
1501 }
1502 delete[] lamp;
1503 return 0;
1504 }
1505
1506 int P5731::main(istream &cin, ostream &cout) {
1507 int n;
1508 cin >> n;
1509 int square[9][9] = {};
1510 int dir = 0;
1511 int current_x = 0;
1512 int current_y = 0;
1513 for(int i = 1; i <= n * n; i++) {
1514 square[current_x][current_y] = i;
1515 auto [next_x, next_y] = move_forward(dir, current_x, current_y);
1516 if(next_x < 0 || next_x >= n || next_y < 0 || next_y >= n || square[next_x][next_y] != 0) {
1517 dir = (dir + 1) % 4;
1518 }
1519 const auto next = move_forward(dir, current_x, current_y);
1520 current_x = next.first;
1521 current_y = next.second;
1522 }
1523 for(int i = 0; i < n; i++) {
1524 for(int j = 0; j < n; j++) {
1525 cout << setw(3) << right << setfill(' ') << square[i][j];
1526 }
1527 cout << endl;
1528 }
1529 return 0;
1530 }
1531
1532 pair<int, int> P5731::move_forward(int dir, int current_x, int current_y) {
1533 int next_x = current_x;
1534 int next_y = current_y;
1535 switch(dir) {
1536 case 0:
1537 next_y++;
1538 break;
1539 case 1:
1540 next_x++;
1541 break;
1542 case 2:
1543 next_y--;
1544 break;
1545 case 3:
1546 next_x--;
1547 break;
1548 }
1549 return make_pair(next_x, next_y);
1550 }
1551
1552 int P5732::main(istream &cin, ostream &cout) {
1553 int n;
1554 cin >> n;
1555 auto *triangle = new int *[n];
1556 for(int i = 0; i < n; i++) {
1557 triangle[i] = new int[i + 1];
1558 for(int j = 0; j <= i; j++) {
1559 if(j == 0 || j == i) {
1560 triangle[i][j] = 1;
1561 } else {
1562 triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
1563 }
1564 cout << triangle[i][j] << " ";
1565 }
1566 cout << endl;
1567 }
1568 for(int i = 0; i < n; i++) {
1569 delete[] triangle[i];
1570 }
1571 delete[] triangle;
1572 return 0;
1573 }
1574
1575 int P1789::main(istream &cin, ostream &cout) {
1576 int n;
1577 int m;
1578 int k;
1579 cin >> n >> m >> k;
1580 bool space[101][101] = {};
1581 memset(space, 0, sizeof space);
1582 for(int i = 0; i < m; i++) {
1583 int x;
1584 int y;
1585 cin >> x >> y;
1586 pair<int, int> lights[13] = {
1587 make_pair(x - 2, y),
1588 make_pair(x - 1, y - 1),
1589 make_pair(x - 1, y),
1590 make_pair(x - 1, y + 1),
1591 make_pair(x, y - 2),
1592 make_pair(x, y - 1),
1593 make_pair(x, y),
1594 make_pair(x, y + 1),
1595 make_pair(x, y + 2),
1596 make_pair(x + 1, y - 1),
1597 make_pair(x + 1, y),
1598 make_pair(x + 1, y + 1),
1599 make_pair(x + 2, y),
1600 };
1601 for(auto [light_x, light_y]: lights) {
1602 if(0 < light_x && light_x <= n && 0 < light_y && light_y <= n) {
1603 space[light_x][light_y] = true;
1604 }
1605 }
1606 }
1607 for(int i = 0; i < k; i++) {
1608 int o;
1609 int p;
1610 cin >> o >> p;
1611 for(int light_x = o - 2; light_x <= o + 2; light_x++) {
1612 for(int light_y = p - 2; light_y <= p + 2; light_y++) {
1613 if(0 < light_x && light_x <= n && 0 < light_y && light_y <= n) {
1614 space[light_x][light_y] = true;
1615 }
1616 }
1617 }
1618 }
1619 int ans = 0;
1620 for(int i = 1; i <= n; i++) {
1621 for(int j = 1; j <= n; j++) {
1622 if(!space[i][j]) {
1623 ans++;
1624 }
1625 }
1626 }
1627 cout << ans;
1628 return 0;
1629 }
1630
1631 int P1319::main(istream &cin, ostream &cout) {
1632 int n;
1633 cin >> n;
1634 bool zero = false;
1635 int count = 0;
1636 for(int i = 0; i < n * n; i++) {
1637 while(count == 0) {
1638 cin >> count;
1639 zero = !zero;
1640 }
1641 if(zero) {
1642 cout << 0;
1643 } else {
1644 cout << 1;
1645 }
1646 count--;
1647 if((i + 1) % n == 0) {
1648 cout << endl;
1649 }
1650 }
1651 return 0;
1652 }
1653
1654 int P1320::main(istream &cin, ostream &cout) {
1655 char ch;
1656 int current = 0;
1657 int count = 0;
1658 vector<int> ans;
1659 int n = 0;
1660 while(cin >> ch) {
1661 if(isdigit(ch) == 0) {
1662 continue;
1663 }
1664 n++;
1665 if(ch - '0' == current) {
1666 count++;
1667 } else {
1668 ans.push_back(count);
1669 current = (current + 1) % 2;
1670 count = 1;
1671 }
1672 }
1673 ans.push_back(count);
1674 cout << static_cast<int>(sqrt(n)) << " ";
1675 for(const auto i: ans) {
1676 cout << i << " ";
1677 }
1678 return 0;
1679 }
1680
1681 int P1205::main(istream &cin, ostream &cout) {
1682 int ans = -1;
1683 int n;
1684 cin >> n;
1685 auto *start = new char *[n];
1686 auto *end = new char *[n];
1687 for(int i = 0; i < n; i++) {
1688 start[i] = new char[n];
1689 for(int j = 0; j < n; j++) {
1690 cin >> start[i][j];
1691 }
1692 }
1693 for(int i = 0; i < n; i++) {
1694 end[i] = new char[n];
1695 for(int j = 0; j < n; j++) {
1696 cin >> end[i][j];
1697 }
1698 }
1699 auto *const r90 = rorate90(n, start);
1700 auto *const r180 = rorate180(n, start);
1701 auto *const r270 = rorate270(n, start);
1702 auto *const r = reflect(n, start);
1703 auto *const rr90 = reflect(n, r90);
1704 auto *const rr180 = reflect(n, r180);
1705 auto *const rr270 = reflect(n, r270);
1706 if(equal(n, r90, end)) {
1707 ans = 1;
1708 } else if(equal(n, r180, end)) {
1709 ans = 2;
1710 } else if(equal(n, r270, end)) {
1711 ans = 3;
1712 } else if(equal(n, r, end)) {
1713 ans = 4;
1714 } else if(equal(n, rr90, end)) {
1715 ans = 5;
1716 } else if(equal(n, rr180, end)) {
1717 ans = 5;
1718 } else if(equal(n, rr270, end)) {
1719 ans = 5;
1720 } else if(equal(n, start, end)) {
1721 ans = 6;
1722 } else {
1723 ans = 7;
1724 }
1725 cout << ans;
1726 for(int i = 0; i < n; i++) {
1727 delete[] start[i];
1728 delete[] end[i];
1729 delete[] r90[i];
1730 delete[] r180[i];
1731 delete[] r270[i];
1732 delete[] r[i];
1733 delete[] rr90[i];
1734 delete[] rr180[i];
1735 delete[] rr270[i];
1736 }
1737 delete[] start;
1738 delete[] end;
1739 delete[] r90;
1740 delete[] r180;
1741 delete[] r270;
1742 delete[] r;
1743 delete[] rr90;
1744 delete[] rr180;
1745 delete[] rr270;
1746 return 0;
1747 }
1748
1749 char **P1205::rorate90(int n, char **start) {
1750 auto *const cpy = new char *[n];
1751 for(int i = 0; i < n; i++) {
1752 cpy[i] = new char[n];
1753 }
1754 for(int i1 = 0, j2 = 0; i1 < n && j2 < n; i1++, j2++) {
1755 for(int j1 = 0, i2 = n - 1; j1 < n && i2 >= 0; j1++, i2--) {
1756 cpy[i1][j1] = start[i2][j2];
1757 }
1758 }
1759 return cpy;
1760 }
1761
1762 char **P1205::rorate180(int n, char **start) {
1763 auto *const cpy = new char *[n];
1764 for(int i = 0; i < n; i++) {
1765 cpy[i] = new char[n];
1766 }
1767 for(int i1 = 0, i2 = n - 1; i1 < n && i2 >= 0; i1++, i2--) {
1768 for(int j1 = 0, j2 = n - 1; j1 < n && j2 >= 0; j1++, j2--) {
1769 cpy[i1][j1] = start[i2][j2];
1770 }
1771 }
1772 return cpy;
1773 }
1774
1775 char **P1205::rorate270(int n, char **start) {
1776 auto *const cpy = new char *[n];
1777 for(int i = 0; i < n; i++) {
1778 cpy[i] = new char[n];
1779 }
1780 for(int i1 = 0, j2 = n - 1; i1 < n && j2 >= 0; i1++, j2--) {
1781 for(int j1 = 0, i2 = 0; j1 < n && i2 < n; j1++, i2++) {
1782 cpy[i1][j1] = start[i2][j2];
1783 }
1784 }
1785 return cpy;
1786 }
1787
1788 char **P1205::reflect(int n, char **start) {
1789 auto *const cpy = new char *[n];
1790 for(int i = 0; i < n; i++) {
1791 cpy[i] = new char[n];
1792 }
1793 for(int i1 = 0, i2 = 0; i1 < n && i2 < n; i1++, i2++) {
1794 for(int j1 = 0, j2 = n - 1; j1 < n && j2 >= 0; j1++, j2--) {
1795 cpy[i1][j1] = start[i2][j2];
1796 }
1797 }
1798 return cpy;
1799 }
1800
1801 bool P1205::equal(int n, char **start, char **end) {
1802 for(int i = 0; i < n; i++) {
1803 for(int j = 0; j < n; j++) {
1804 if(start[i][j] != end[i][j]) {
1805 return false;
1806 }
1807 }
1808 }
1809 return true;
1810 }
1811
1812 int P5733::main(istream &cin, ostream &cout) {
1813 string str;
1814 cin >> str;
1815 for(const char ch: str) {
1816 if(islower(ch) != 0) {
1817 cout << static_cast<char>(toupper(ch));
1818 } else {
1819 cout << ch;
1820 }
1821 }
1822 return 0;
1823 }
1824
1825 int P1914::main(istream &cin, ostream &cout) {
1826 string str;
1827 int n;
1828 cin >> n >> str;
1829 for(const char ch: str) {
1830 cout << static_cast<char>((ch - 'a' + n) % 26 + 'a');
1831 }
1832 return 0;
1833 }
1834
1835 int P1125::main(istream &cin, ostream &cout) {
1836 string str;
1837 cin >> str;
1838 int freq[26] = {};
1839 int maxn = 0;
1840 int minn = 100;
1841 for(const char ch: str) {
1842 freq[ch - 'a']++;
1843 }
1844 for(int i = 0; i < 26; i++) {
1845 if(freq[i] > 0) {
1846 maxn = max(maxn, freq[i]);
1847 minn = min(minn, freq[i]);
1848 }
1849 }
1850 bool is_prime = true;
1851 for(int i = 2; i <= sqrt(maxn - minn); i++) {
1852 if((maxn - minn) % i == 0) {
1853 is_prime = false;
1854 break;
1855 }
1856 }
1857 if(maxn - minn < 2) {
1858 is_prime = false;
1859 }
1860 if(is_prime) {
1861 cout << "Lucky Word" << endl
1862 << maxn - minn;
1863 } else {
1864 cout << "No Answer" << endl
1865 << 0;
1866 return 0;
1867 }
1868 return 0;
1869 }
1870
1871 int P1957::main(istream &cin, ostream &cout) {
1872 int i;
1873 cin >> i;
1874 char op;
1875 for(int _ = 0; _ < i; _++) {
1876 int num1;
1877 int num2;
1878 string pos1;
1879 cin >> pos1;
1880 if(isalpha(pos1[0]) != 0) {
1881 op = pos1[0];
1882 cin >> num1 >> num2;
1883 } else {
1884 auto ss = stringstream();
1885 ss << pos1;
1886 ss >> num1;
1887 cin >> num2;
1888 }
1889 auto oss = ostringstream();
1890 switch(op) {
1891 case 'a':
1892 oss << num1 << '+' << num2 << '=' << num1 + num2;
1893 break;
1894 case 'b':
1895 oss << num1 << '-' << num2 << '=' << num1 - num2;
1896 break;
1897 case 'c':
1898 oss << num1 << '*' << num2 << '=' << num1 * num2;
1899 break;
1900 default:
1901 cerr << "Unknown Op:\t" << op;
1902 return 1;
1903 }
1904 string str = oss.str();
1905 cout << str << endl
1906 << str.length() << endl;
1907 }
1908 return 0;
1909 }
1910
1911 int P5015::main(istream &cin, ostream &cout) {
1912 int ans = 0;
1913 char ch;
1914 while((ch = cin.get()) != EOF) {
1915 if(isalnum(ch) != 0) {
1916 ans++;
1917 }
1918 }
1919 cout << ans;
1920 return 0;
1921 }
1922
1923 int P5734::main(istream &cin, ostream &cout) {
1924 string doc;
1925 int n;
1926 cin >> n >> doc;
1927 int op;
1928 for(int i = 0; i < n; i++) {
1929 cin >> op;
1930 switch(op) {
1931 case 1: {
1932 string str;
1933 cin >> str;
1934 doc.insert(doc.end(), str.begin(), str.end());
1935 cout << doc << endl;
1936 break;
1937 }
1938 case 2: {
1939 int a;
1940 int b;
1941 cin >> a >> b;
1942 doc = doc.substr(a, b);
1943 cout << doc << endl;
1944 break;
1945 }
1946 case 3: {
1947 int a;
1948 string str;
1949 cin >> a >> str;
1950 doc.insert(doc.begin() + a, str.begin(), str.end());
1951 cout << doc << endl;
1952 break;
1953 }
1954 case 4: {
1955 string str;
1956 cin >> str;
1957 const auto ans = doc.find(str);
1958 if(ans == string::npos) {
1959 cout << -1 << endl;
1960 } else {
1961 cout << ans << endl;
1962 }
1963 break;
1964 }
1965 }
1966 }
1967 return 0;
1968 }
1969
1970 int P1308::main(istream &cin, ostream &cout) {
1971 int sum = 0;
1972 int pos = -1;
1973 auto *target = new char[11];
1974 auto *article = new char[1000001];
1975 cin.getline(target, 11);
1976 for(int i = 0; i < strlen(target); i++) {
1977 target[i] = tolower(target[i]);
1978 }
1979 cin.getline(article, 1000001);
1980
1981 for(int i = 0; i + strlen(target) <= strlen(article); i++) {
1982 if(!((i == 0 || article[i - 1] == ' ') && (i + strlen(target) == strlen(article) || article[i + strlen(target)] == ' '))) {
1983 continue;
1984 }
1985 bool ok = true;
1986 for(int j = 0; j < strlen(target); j++) {
1987 if(target[j] != tolower(article[i + j])) {
1988 ok = false;
1989 break;
1990 }
1991 }
1992 if(ok) {
1993 sum++;
1994 if(pos == -1) {
1995 pos = i;
1996 }
1997 }
1998 }
1999 if(sum == 0) {
2000 cout << -1;
2001 } else {
2002 cout << sum << " " << pos;
2003 }
2004 delete[] target;
2005 delete[] article;
2006 return 0;
2007 }
2008
2009 int P1765::main(istream &cin, ostream &cout) {
2010 int ans = 0;
2011 const int nums[26] = {1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 1, 2, 3, 4};
2012 char ch;
2013 while((ch = cin.get()) != EOF) {
2014 if(ch == ' ') {
2015 ans++;
2016 } else if(isalpha(ch) != 0) {
2017 ans += nums[ch - 'a'];
2018 }
2019 }
2020 cout << ans;
2021 return 0;
2022 }
2023
2024 int P3741::main(istream &cin, ostream &cout) {
2025 int n;
2026 bool flag = false;
2027 int ans = 0;
2028 cin >> n;
2029 string str;
2030 cin >> str;
2031 for(int i = 0; i < n - 1; i++) {
2032 if(str[i] == 'V') {
2033 if(str[i + 1] == 'K') {
2034 ans++;
2035 } else if(i + 2 == n || i + 2 < n && str[i + 2] != 'K') {
2036 flag = true;
2037 }
2038 } else if(str[i + 1] == 'K' && (i - 1 >= 0 && str[i - 1] != 'V' || i == 0)) {
2039 flag = true;
2040 }
2041 }
2042 if(flag) {
2043 ans++;
2044 }
2045 cout << ans;
2046 return 0;
2047 }
2048
2049 int P1321::main(istream &cin, ostream &cout) {
2050 string str;
2051 string boygirl[] = {"boy", "girl"};
2052 cin >> str;
2053 for(auto word: boygirl) {
2054 int count = 0;
2055 for(int i = 0; i + word.length() - 1 < str.length(); i++) {
2056 for(int j = 0; j < word.length(); j++) {
2057 if(word[j] == str[i + j]) {
2058 count++;
2059 break;
2060 }
2061 }
2062 }
2063 cout << count << endl;
2064 }
2065 return 0;
2066 }
2067
2068 int P1553::main(istream &cin, ostream &cout) {
2069 deque<char> dq[2];
2070 stringstream ss[2];
2071 int current = 0;
2072 int limit = 1;
2073 char op = 'N';
2074 char ch;
2075 while(cin >> ch) {
2076 if(isdigit(ch) != 0) {
2077 bool flag = false;
2078 dq[current].push_front(ch);
2079 } else {
2080 op = ch;
2081 current++;
2082 }
2083 }
2084 if(op == '.' || op == '/') {
2085 limit = 2;
2086 }
2087 for(int i = 0; i < limit; i++) {
2088 while(dq[i].size() > 1 && dq[i].front() == '0') {
2089 dq[i].pop_front();
2090 }
2091 if(op == '.' && i == 1) {
2092 while(dq[i].size() > 1 && dq[i].back() == '0') {
2093 dq[i].pop_back();
2094 }
2095 }
2096 while(!dq[i].empty()) {
2097 ss[i] << dq[i].front();
2098 dq[i].pop_front();
2099 }
2100 }
2101 cout << ss[0].str();
2102 if(op != 'N') {
2103 cout << op;
2104 if(op != '%') {
2105 cout << ss[1].str();
2106 }
2107 }
2108 return 0;
2109 }
2110
2111 int P1603::main(istream &cin, ostream &cout) {
2112 unordered_map<string, int> um;
2113 um["one"] = 1;
2114 um["two"] = 2;
2115 um["three"] = 3;
2116 um["four"] = 4;
2117 um["five"] = 5;
2118 um["six"] = 6;
2119 um["seven"] = 7;
2120 um["eight"] = 8;
2121 um["nine"] = 9;
2122 um["ten"] = 10;
2123 um["eleven"] = 11;
2124 um["twelve"] = 12;
2125 um["thirteen"] = 13;
2126 um["fourteen"] = 14;
2127 um["fifteen"] = 15;
2128 um["sixteen"] = 16;
2129 um["seventeen"] = 17;
2130 um["eighteen"] = 18;
2131 um["nineteen"] = 19;
2132 um["twenty"] = 20;
2133 um["a"] = 1;
2134 um["both"] = 2;
2135 um["another"] = 1;
2136 um["first"] = 1;
2137 um["second"] = 2;
2138 um["third"] = 3;
2139 multiset<int> ms;
2140 string word;
2141 for(int i = 0; i < 6; i++) {
2142 cin >> word;
2143 if(um.contains(word)) {
2144 ms.insert(um[word] * um[word] % 100);
2145 }
2146 }
2147 if(ms.empty()) {
2148 cout << 0;
2149 return 0;
2150 }
2151 stringstream ss;
2152 for(const auto i: ms) {
2153 if(i < 10) {
2154 ss << '0';
2155 }
2156 ss << i;
2157 }
2158 unsigned long long ans;
2159 ss >> ans;
2160 cout << ans;
2161 return 0;
2162 }
2163
2164 int P1200::main(istream &cin, ostream &cout) {
2165 string comet;
2166 string team;
2167 cin >> comet >> team;
2168 unsigned int comet_int = 1;
2169 unsigned int team_int = 1;
2170 for(const char ch: comet) {
2171 comet_int *= ch - 'A' + 1;
2172 comet_int %= 47;
2173 }
2174 for(const char ch: team) {
2175 team_int *= ch - 'A' + 1;
2176 team_int %= 47;
2177 }
2178 cout << (comet_int == team_int ? "GO" : "STAY");
2179 return 0;
2180 }
2181
2182 int P1597::main(istream &cin, ostream &cout) {
2183 int a = 0;
2184 int b = 0;
2185 int c = 0;
2186 while(true) {
2187 char var;
2188 int *p = nullptr;
2189 int val;
2190 char ref;
2191 if(!(cin >> var) || isalpha(var) == 0) {
2192 break;
2193 }
2194 switch(var) {
2195 case 'a':
2196 p = &a;
2197 break;
2198 case 'b':
2199 p = &b;
2200 break;
2201 case 'c':
2202 p = &c;
2203 break;
2204 }
2205 cin.get();
2206 cin.get();
2207 if(isdigit(cin.peek()) != 0) {
2208 cin >> val;
2209 *p = val;
2210 } else {
2211 cin >> ref;
2212 switch(ref) {
2213 case 'a':
2214 *p = a;
2215 break;
2216 case 'b':
2217 *p = b;
2218 break;
2219 case 'c':
2220 *p = c;
2221 break;
2222 default: break;
2223 }
2224 }
2225 cin.get();
2226 }
2227 cout << a << " " << b << " " << c;
2228 return 0;
2229 }
2230
2231 int P1598::main(istream &cin, ostream &cout) {
2232 char ch;
2233 int count[26] = {};
2234 int maximum = 0;
2235 while(cin >> ch) {
2236 if(isupper(ch) != 0) {
2237 count[ch - 'A']++;
2238 maximum = max(maximum, count[ch - 'A']);
2239 }
2240 }
2241 for(int i = maximum; i > 0; i--) {
2242 for(int j = 0; j < 26; j++) {
2243 if(count[j] >= i) {
2244 cout << '*';
2245 } else {
2246 cout << ' ';
2247 }
2248 cout << ' ';
2249 }
2250 cout << endl;
2251 }
2252 for(char ch = 'A'; ch <= 'Z'; ch++) {
2253 cout << ch << ' ';
2254 }
2255 return 0;
2256 }
2257
2258 int P5735::main(istream &cin, ostream &cout) {
2259 double x1;
2260 double y1;
2261 double x2;
2262 double y2;
2263 double x3;
2264 double y3;
2265 cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
2266 const double d12 = sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));
2267 const double d23 = sqrt(pow(x3 - x2, 2) + pow(y3 - y2, 2));
2268 const double d13 = sqrt(pow(x3 - x1, 2) + pow(y3 - y1, 2));
2269 cout << fixed << setprecision(2) << d12 + d23 + d13;
2270 return 0;
2271 }
2272
2273 int P5736::main(istream &cin, ostream &cout) {
2274 int n;
2275 cin >> n;
2276 bool notprime[100001];
2277 memset(notprime, 1, sizeof notprime);
2278 notprime[0] = false;
2279 notprime[1] = false;
2280 notprime[2] = true;
2281 for(unsigned int i = 2; i <= 50000; i++) {
2282 for(unsigned int j = 2; i * j <= 100000; j++) {
2283 notprime[i * j] = false;
2284 }
2285 }
2286 unsigned int num;
2287 for(int _ = 0; _ < n; _++) {
2288 cin >> num;
2289 if(notprime[num]) {
2290 cout << num << " ";
2291 }
2292 }
2293 return 0;
2294 }
2295
2296 int P5737::main(istream &cin, ostream &cout) {
2297 int x;
2298 int y;
2299 cin >> x >> y;
2300 ostringstream oss;
2301 int sum = 0;
2302 for(int year = x; year <= y; year++) {
2303 if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
2304 oss << year << ' ';
2305 sum++;
2306 }
2307 }
2308 cout << sum << endl
2309 << oss.str();
2310 return 0;
2311 }
2312
2313 int P5738::main(istream &cin, ostream &cout) {
2314 int n;
2315 int m;
2316 cin >> n >> m;
2317 double ans = 0;
2318 for(int i = 0; i < n; i++) {
2319 vector<int> vec(m);
2320 for(int j = 0; j < m; j++) {
2321 cin >> vec[j];
2322 }
2323 sort(vec.begin(), vec.end());
2324 ans = max(ans, static_cast<double>(accumulate(vec.begin() + 1, vec.end() - 1, 0)) / (m - 2));
2325 }
2326 cout << fixed << setprecision(2) << ans;
2327 return 0;
2328 }
2329
2330 int P5739::main(istream &cin, ostream &cout) {
2331 unsigned int n;
2332 cin >> n;
2333 unsigned int ans = 1;
2334 for(unsigned int i = 1; i <= n; i++) {
2335 ans *= i;
2336 }
2337 cout << ans;
2338 return 0;
2339 }
2340
2341 int P5461::main(istream &cin, ostream &cout) {
2342 unsigned int n;
2343 cin >> n;
2344 n = 1 << n;
2345 auto *const matrix = new bool *[n];
2346 for(int i = 0; i < n; i++) {
2347 matrix[i] = new bool[n];
2348 memset(matrix[i], 1, n * sizeof(bool));
2349 }
2350 pardon(matrix, 0, 0, n);
2351 for(int i = 0; i < n; i++) {
2352 for(int j = 0; j < n; j++) {
2353 cout << matrix[i][j] << " ";
2354 }
2355 cout << endl;
2356 delete[] matrix[i];
2357 }
2358 delete[] matrix;
2359 return 0;
2360 }
2361
2362 void P5461::pardon(bool **matrix, int x0, int y0, int n) {
2363 if(n == 2) {
2364 matrix[x0][y0] = false;
2365 return;
2366 }
2367 for(int i = 0; i < n / 2; i++) {
2368 for(int j = 0; j < n / 2; j++) {
2369 matrix[x0 + i][y0 + j] = false;
2370 }
2371 }
2372 pardon(matrix, x0, y0 + n / 2, n / 2);
2373 pardon(matrix, x0 + n / 2, y0, n / 2);
2374 pardon(matrix, x0 + n / 2, y0 + n / 2, n / 2);
2375 }
2376
2377 int P5740::main(istream &cin, ostream &cout) {
2378 int n;
2379 cin >> n;
2380 string max_name;
2381 int max_1 = 0;
2382 int max_2 = 0;
2383 int max_3 = 0;
2384 int max_sum = -1;
2385 for(int i = 0; i < n; i++) {
2386 string name;
2387 int grade1;
2388 int grade2;
2389 int grade3;
2390 cin >> name >> grade1 >> grade2 >> grade3;
2391 const int sum = grade1 + grade2 + grade3;
2392 if(max_sum < sum) {
2393 max_sum = sum;
2394 max_name = name;
2395 max_1 = grade1;
2396 max_2 = grade2;
2397 max_3 = grade3;
2398 }
2399 }
2400 cout << max_name << ' ' << max_1 << ' ' << max_2 << ' ' << max_3;
2401 return 0;
2402 }
2403
2404 int P5741::main(istream &cin, ostream &cout) {
2405 int n;
2406 cin >> n;
2407 vector<pair<string, array<int, 3>>> vec(n);
2408 for(int i = 0; i < n; i++) {
2409 string name;
2410 array<int, 3> grade = {};
2411 cin >> name >> grade[0] >> grade[1] >> grade[2];
2412 vec[i] = make_pair(name, grade);
2413 }
2414 for(int i = 0; i + 1 < n; i++) {
2415 const int sum_i = vec[i].second[0] + vec[i].second[1] + vec[i].second[2];
2416 for(int j = i + 1; j < n; j++) {
2417 const int sum_j = vec[j].second[0] + vec[j].second[1] + vec[j].second[2];
2418 if(abs(sum_i - sum_j) <= 10) {
2419 bool flag = true;
2420 for(int k = 0; k < 3; k++) {
2421 if(abs(vec[i].second[k] - vec[j].second[k]) > 5) {
2422 flag = false;
2423 break;
2424 }
2425 }
2426 if(flag) {
2427 cout << vec[i].first << ' ' << vec[j].first << endl;
2428 }
2429 }
2430 }
2431 }
2432 return 0;
2433 }
2434
2435 namespace P5742 {
2436 int P5742::main(istream &cin, ostream &cout) {
2437 int n;
2438 cin >> n;
2439 for(int i = 0; i < n; i++) {
2440 int number;
2441 int grade;
2442 int extra_grade;
2443 cin >> number;
2444 cin >> grade;
2445 cin >> extra_grade;
2446 auto s = Student(number, grade, extra_grade);
2447 cout << (s.excellent() ? "Excellent" : "Not excellent") << endl;
2448 }
2449 return 0;
2450 }
2451
2452 bool Student::excellent() const { return sum > 140 && composite >= 80; }
2453 }// namespace P5742
2454
2455 int P1304::main(istream &cin, ostream &cout) {
2456 int n;
2457 cin >> n;
2458 set<int> primes;
2459 for(int i = 2; i <= n; i++) {
2460 primes.insert(i);
2461 }
2462 for(int i = 2; i <= n; i++) {
2463 for(int j = 2; i * j <= n; j++) {
2464 primes.erase(i * j);
2465 }
2466 }
2467 for(int i = 4; i <= n; i += 2) {
2468 for(auto prime = primes.begin(); *prime <= i / 2 && prime != primes.end(); ++prime) {
2469 if(primes.contains(i - *prime)) {
2470 cout << i << '=' << *prime << '+' << i - *prime << endl;
2471 break;
2472 }
2473 }
2474 }
2475 return 0;
2476 }
2477
2478 int P2415::main(istream &cin, ostream &cout) {
2479 vector<int> vec;
2480 int num;
2481 while(cin >> num) {
2482 vec.push_back(num);
2483 }
2484 const int n = vec.size();
2485 const unsigned long long base = static_cast<unsigned long long>(1) << n - 1;
2486 unsigned long long sum = 0;
2487 for(const auto num: vec) {
2488 sum += num * base;
2489 }
2490 cout << sum;
2491 return 0;
2492 }
2493
2494 int P5743::main(istream &cin, ostream &cout) {
2495 int n;
2496 cin >> n;
2497 int count = 1;
2498 for(int i = 0; i < n - 1; i++) {
2499 count++;
2500 count *= 2;
2501 }
2502 cout << count;
2503 return 0;
2504 }
2505
2506 namespace P5744 {
2507 int P5744::main(istream &cin, ostream &cout) {
2508 int n;
2509 cin >> n;
2510 for(int i = 0; i < n; i++) {
2511 auto stu = Student();
2512 cin >> stu.name;
2513 cin >> stu.age;
2514 cin >> stu.grade;
2515 stu.train();
2516 cout << stu.name << ' ' << stu.age << ' ' << stu.grade << endl;
2517 }
2518 return 0;
2519 }
2520
2522 age++;
2523 grade = grade / 5 * 6;
2524 grade = min(grade, 600);
2525 }
2526 }// namespace P5744
2527}// namespace luogu
int main(int argc, char **argv)
Definition: main.cpp:5
void ms(vector< int > &arr, int l, int r, int *ans)
Definition: acwing.cpp:6334
Definition: luogu.cpp:18
bool is_prime(int n)
Definition: pat.cpp:2077
int vec[100010]
Definition: pat.cpp:5095
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:19
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:27
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:53
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:116
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:142
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:173
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:181
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:188
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:197
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:206
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:217
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:268
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:278
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:286
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:303
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:316
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:337
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:346
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:355
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:380
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:391
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:404
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:414
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:430
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:447
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:464
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:483
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:512
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:528
static int gcd(int m, int n)
Definition: luogu.cpp:560
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:544
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:570
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:588
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:615
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:648
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:661
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:682
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:694
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:707
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:715
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:734
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:746
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:764
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:775
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:802
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:921
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:935
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:956
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:963
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:978
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:998
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1010
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1033
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1050
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1069
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1089
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1109
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1125
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1144
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1169
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1206
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1245
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1274
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1316
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1391
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1410
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1433
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1454
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1482
static pair< int, int > move_forward(int dir, int current_x, int current_y)
Definition: luogu.cpp:1532
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1506
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1552
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1575
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1631
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1654
static char ** rorate90(int n, char **start)
Definition: luogu.cpp:1749
static bool equal(int n, char **start, char **end)
Definition: luogu.cpp:1801
static char ** rorate180(int n, char **start)
Definition: luogu.cpp:1762
static char ** reflect(int n, char **start)
Definition: luogu.cpp:1788
static char ** rorate270(int n, char **start)
Definition: luogu.cpp:1775
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1681
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1812
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1825
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1835
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1871
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1911
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1923
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:1970
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:2009
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:2024
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:2049
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:2068
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:2111
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:2164
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:2182
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:2231
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:2258
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:2273
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:2296
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:2313
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:2330
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:2341
static void pardon(bool **matrix, int x0, int y0, int n)
Definition: luogu.cpp:2362
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:2377
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:2404
int sum
总分
Definition: luogu.h:652
bool excellent() const
学生是否优秀
Definition: luogu.cpp:2452
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:2455
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:2478
static int main(istream &cin, ostream &cout)
Definition: luogu.cpp:2494
void train()
训练
Definition: luogu.cpp:2521
int age
年龄
Definition: luogu.h:694