
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%
|
uva 10055 Hashmat the brave warrior
题目大意:求两个数的差,注意上限。
#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;
}
#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;
}
#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;
}
uva 494 Kindergarten Counting Game
#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;
}
#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;
}
#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;
}
#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;
}
#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;
}