【索引】Volume 0. Getting Started

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;

}

 

 

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;

}


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;

}

 



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\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;

}


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\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;

}


 

 

你可能感兴趣的:(start)