【索引】Volume 0. Getting Started

AOAPC I: Beginning Algorithm Contests (Rujia Liu)


Volume 0. Getting Started


FILE 10055 - Hashmat the Brave Warrior 153793
 
27.33%
33385
 
85.74%
FILE 10071 - Back to High School Physics 76581
 
50.07%
28855
 
93.71%
FILE 10300 - Ecological Premium 26621
 
66.39%
15397
 
96.67%
FILE 458 - The Decoder 53026
 
47.65%
19817
 
92.60%
FILE 494 - Kindergarten Counting Game 50741
 
37.94%
17306
 
88.44%
FILE 414 - Machined Surfaces 15779
 
43.57%
6212
 
92.14%
FILE 490 - Rotating Sentences 31459
 
28.06%
8462
 
78.31%
FILE 445 - Marvelous Mazes 25516
 
41.20%
8877
 
85.10%
FILE 488 - Triangle Wave 64113
 
21.00%
14397
 
64.00%
FILE 489 - Hangman Judge 18406
 
26.42%
5871
 
60.77%
FILE 694 - The Collatz Sequence 24814
 
39.03%
8554
 
87.32%
FILE 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
", 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
", 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
", 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;
}


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);
    }
    return 0;
}



uva 414 Machined Surfaces

#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
", 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("
");
    }
    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("
");
	    else {
		for (int j = 0; j < cnt; j++)
		    printf("%c", str[i] != 'b' ? str[i] : ' ');
		cnt = 0;
	    }
	}
	printf("
");
    }
    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("
");
	}
	for (int i = len - 1; i > 0; i--) {
	    for (int j = 0; j < i; j++)
		printf("%d", i);
	    printf("
");
	}
	if (n)	printf("
");
    }
}

int main() {
    int cas, len, n;
    scanf("%d", &cas);
    while (cas--) {
	scanf("%d%d", &len, &n);
	print(len, n);
	if (cas) printf("
");
    }
    return 0;
}


uva 489 Hangman Judge

#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
", cas);
	if (cntAnswer)
	    printf("%s
", cntWrong != 7 ? "You chickened out." : "You lose.");
	else
	    printf("You win.
");
    }
    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
", 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("
");

	    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("
");
    }
    return 0;
}


原文地址:https://www.cnblogs.com/keanuyaoo/p/3275441.html