AOAPC I: Beginning Algorithm Contests (Rujia Liu)
Volume 0. Getting Started
10055 - Hashmat the Brave Warrior | 153793 |
27.33%
|
33385 |
85.74%
|
|
10071 - Back to High School Physics | 76581 |
50.07%
|
28855 |
93.71%
|
|
10300 - Ecological Premium | 26621 |
66.39%
|
15397 |
96.67%
|
|
458 - The Decoder | 53026 |
47.65%
|
19817 |
92.60%
|
|
494 - Kindergarten Counting Game | 50741 |
37.94%
|
17306 |
88.44%
|
|
414 - Machined Surfaces | 15779 |
43.57%
|
6212 |
92.14%
|
|
490 - Rotating Sentences | 31459 |
28.06%
|
8462 |
78.31%
|
|
445 - Marvelous Mazes | 25516 |
41.20%
|
8877 |
85.10%
|
|
488 - Triangle Wave | 64113 |
21.00%
|
14397 |
64.00%
|
|
489 - Hangman Judge | 18406 |
26.42%
|
5871 |
60.77%
|
|
694 - The Collatz Sequence | 24814 |
39.03%
|
8554 |
87.32%
|
|
457 - Linear Cellular Automata | 7589 |
33.79%
|
2571 |
81.56%
|
题目大意:求两个数的差,注意上限。
#include <stdio.h> int main() { long long a, b; while (scanf("%lld%lld", &a, &b) == 2) { printf("%lld\n", a > b ? a - b : b - a); } return 0; }
uva 10071 Back to High School Physics
题目大意:计算2 * a * b。
#include <stdio.h> int main() { int v, t; while (scanf("%d%d", &v, &t) == 2) { printf("%d\n", 2 * v * t); } return 0; }
uva 10300 Ecological Premium
#include <stdio.h> int main() { int cas; int n, size, ani, val; scanf("%d", &cas); while (cas--) { int sum = 0; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d%d%d", &size, &ani, &val); sum += size * val; } printf("%d\n", sum); } return 0; }
uva 458 The decoder
#include <stdio.h> #include <string.h> const int N = 1005; int main() { char s[N]; while (gets(s)) { int len = strlen(s); for (int i = 0; i < len; i++) s[i] = s[i] - 7; puts(s); } return 0; }
#include <stdio.h> #include <string.h> const int N = 10005; bool judge(char c) { if (c >= 'a' && c <= 'z') return true; else if (c >= 'A' && c <= 'Z') return true; return false; } int main() { char str[N]; while (gets(str)) { int len = strlen(str), flag = 0, n = 0; for (int i = 0; i < len; i++) { if (judge(str[i])) { if (flag) continue; flag = 1; n++; } else flag = 0; } printf("%d\n", n); } return 0; }
#include <stdio.h> #include <string.h> const int N = 10005; int count(char str[]) { int cnt = 0, len = strlen(str); for (int i = 0; i < len; i++) if (str[i] == 'X') cnt++; return cnt; } int main() { char str[N]; int n, max, sum, tmp; while (scanf("%d%*c", &n), n) { max = sum = 0; for (int i = 0; i < n; i++) { gets(str); tmp = count(str); if (max < tmp) max = tmp; sum += tmp; } printf("%d\n", max * n - sum ); } return 0; }
uva 490 Rotating Sentences
#include <stdio.h> #include <string.h> const int N = 107; char str[N][N]; int main() { int n = 0, len = 0; memset(str, 0, sizeof(str)); while (gets(str[n])) { int a = strlen(str[n++]); if (len < a) len = a; } for (int i = 0; i < n; i++) for (int j = 0; j < len; j++) if (!str[i][j]) str[i][j] = ' '; for (int i = 0; i < len; i++) { for (int j = n - 1; j >= 0; j--) printf("%c", str[j][i]); printf("\n"); } return 0; }
uva445 Marvelous Mazes
#include <stdio.h> #include <string> #include <iostream> using namespace std; int main() { string str; while (getline(cin, str)) { int len = str.length(), cnt = 0; for (int i = 0; i < len; i++) { if (str[i] >= '0' && str[i] <= '9') cnt += str[i] - '0'; else if (str[i] == '!') printf("\n"); else { for (int j = 0; j < cnt; j++) printf("%c", str[i] != 'b' ? str[i] : ' '); cnt = 0; } } printf("\n"); } return 0; }
uva 488 Triangle Wave
#include <stdio.h> void print(int len, int n) { while (n--) { for (int i = 1; i <= len; i++) { for (int j = 0; j < i; j++) printf("%d", i); printf("\n"); } for (int i = len - 1; i > 0; i--) { for (int j = 0; j < i; j++) printf("%d", i); printf("\n"); } if (n) printf("\n"); } } int main() { int cas, len, n; scanf("%d", &cas); while (cas--) { scanf("%d%d", &len, &n); print(len, n); if (cas) printf("\n"); } return 0; }
#include <stdio.h> #include <string.h> const int N = 30; const int M = 10005; int answer[N], gass[N]; int cntAnswer, cntWrong; int main() { int cas; char str[M]; while (scanf("%d", &cas), cas != -1) { // Init; memset(answer, 0, sizeof(answer)); memset(gass, 0, sizeof(gass)); cntAnswer = cntWrong = 0; scanf("%s", str); int len = strlen(str); for (int i = 0; i < len ; i++) { if (answer[str[i] - 'a'] == 0) { answer[str[i] - 'a'] = 1; cntAnswer++; } } scanf("%s", str); len = strlen(str); for (int i = 0; i < len; i++) { if (gass[str[i] - 'a']) continue; if (answer[str[i] - 'a']) cntAnswer--; else cntWrong++; gass[str[i] - 'a'] = 1; if (cntAnswer == 0 || cntWrong == 7) break; } printf("Round %d\n", cas); if (cntAnswer) printf("%s\n", cntWrong != 7 ? "You chickened out." : "You lose."); else printf("You win.\n"); } return 0; }
uva 694 The Collatz Sequence
#include <stdio.h> int main() { long long cur, max, cnt, cas = 1, rec; while (scanf("%lld%lld", &cur, &max)) { if (cur < 0 || max < 0) break; cnt = 1; rec = cur; while (cur != 1) { if (cur % 2) cur = 3 * cur + 1; else cur = cur / 2; if (cur > max) break; cnt++; } printf("Case %lld: A = %lld, limit = %lld, number of terms = %lld\n", cas++, rec, max, cnt); } return 0; }
uva 457 Linear Cellular Automata
#include <stdio.h> #include <string.h> const int N = 42; const char sign[] = " .xW"; int DNA[10], tmp[N], rec[N]; int main() { int cas; scanf("%d", &cas); while (cas--) { // Init memset(DNA, 0, sizeof(DNA)); memset(tmp, 0, sizeof(tmp)); memset(rec, 0, sizeof(rec)); tmp[20] = rec[20] = 1; for (int i = 0; i < 10; i++) scanf("%d", &DNA[i]); for (int data = 1; data <= 50; data++) { for (int i = 1; i <= 40; i++) printf("%c", sign[tmp[i]]); printf("\n"); for (int i = 1; i <= 40; i++) rec[i] = DNA[tmp[i - 1] + tmp[i] + tmp[i + 1]]; memcpy(tmp, rec, sizeof(rec)); } if (cas) printf("\n"); } return 0; }