UVa-Getting Started

AOAPC I: Beginning Algorithm Contests (Rujia Liu) :: Volume 0. Getting Started


 

// 10055 - Hashmat the Brave Warrior
#include <iostream>
using namespace std;
int main(void)
{
	long a, b;	// The input numbers are not greater than 2^32
	while(cin >> a >> b)
		cout << (a>b ? a-b:b-a) << endl;	// or vice versa
	return 0;
}

// 10071 - Back to High School Physics
#include <iostream>
using namespace std;
int main(void)
{
	int v, t;
	while(cin >> v >> t)
		cout << 2*v*t << endl;
	return 0;
}

// 10300 - Ecological Premium
#include <iostream>
using namespace std;
int main(void)
{
	int i, n, f, a, b, c, s;
	while(cin >> n)
	{
		while(n--)
		{
			cin >> f;
			s = 0;
			for(i=0; i<f; i++)
			{
				cin >> a >> b >> c;
				s += a*c;
			}
			cout << s << endl;
		}
	}
	return 0;
}

// 458 - The Decoder
#include <cstdio>
int main(void)
{
	int c;
	while((c=getchar()) != EOF)
		if(c != '\n')
			putchar(c-7);
		else
			putchar('\n');
	return 0;
}

// 494 - Kindergarten Counting Game
#include <cstdio>
#include <cctype>
int main(void)
{
	int c, ok=1, cnt=0;
	while((c=getchar()) != EOF)
	{
		if(c != '\n')
		{
			if(isalpha(c) && ok)
			{
				cnt++;
				ok = 0;
			}
			else if(isalpha(c))
			{
				ok = 0;
			}
			else
			{
				ok = 1;
			}
		}
		else
		{
			printf("%d\n", cnt);
			ok = 1;
			cnt = 0;
		}
	}
    return 0;
}

// 414 - Machined Surfaces
#include <cstdio>
#define MAXN 26
int main(void)
{
	char s[MAXN];
	int i, j, n, k, min, sum;
	while(scanf("%d%*c", &n) && n)
	{
		min = MAXN;
		sum = 0;
		for(i=0; i<n; i++)
		{
			k = 0;
			gets(s);
			for(j=0; j<MAXN; j++)
				if(s[j] == ' ')
					k++;
			if(k < min)
				min = k;
			sum += k;
		}
		printf("%d\n", sum-min*n);
	}
	return 0;
}

// 490 - Rotating Sentences
#include <cstdio>
#include <cstring>
#define MAXN 101
int main(void)
{
	int i, j, r=0, maxlen=0;
	int len[MAXN];
	char s[MAXN][MAXN];
	while(gets(s[r]) != NULL)
	{
		len[r] = strlen(s[r]);
		if(len[r] > maxlen)
			maxlen = len[r];
		r++;
	}
	for(j=0; j<maxlen; j++){
		for(i=r-1; i>=0; i--)
			if(j < len[i])
				printf("%c", s[i][j]);
			else
				printf(" ");
		printf("\n");
	}
	return 0;
}

// 445 - Marvelous Mazes
#include <cstdio>
#include <cctype>
int main(void)
{
	char c;
	int n = 0;
	while((c=getchar()) != EOF)
	{
		if(isdigit(c)) n += c-'0';
		else if(c=='!' || c=='\n') putchar('\n');
		else if(c=='b') while(n) {putchar(' '); n--;}
		else while(n) {putchar(c); n--;}
	}
	return 0;
}

// 488 - Triangle Wave
#include <iostream>
using namespace std;
int main(void)
{
	int i, j, n, A, F;
	while(cin >> n)
	{
		while(n--)
		{
			cin >> A >> F;
			while(F--)
			{
				for(i=1; i<=A; i++)
				{
					for(j=1; j<=i; j++)
						cout << i;
					cout << endl;
				}
				for(i=A-1; i>=1; i--)
				{
					for(j=1; j<=i; j++)
						cout << i;
					cout << endl;
				}
				if(F != 0)	// !!!
					cout << endl;
			}
			if(n != 0)	// !!!
				cout << endl;
		}
	}
	return 0;
}

// 489 - Hangman Judge
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main(void)
{
	//freopen("in.txt", "r", stdin);
	//freopen("out.txt", "w", stdout);
	char word[100], guess[100];
	int i, n, len, flag, match, strokes, alpha[26], vis[26];
	while(cin>>n && n!=-1)
	{
		flag = 1;
		len = match = strokes = 0;
		memset(alpha, 0, sizeof(alpha));
		memset(vis, 0, sizeof(vis));
		cout << "Round " << n << endl;
		cin >> word >> guess;
		for(i=0; word[i]; i++)
			alpha[word[i]-'a'] = 1;
		for(i=0; i<26; i++)
			len += alpha[i];

		for(i=0; guess[i]; i++)
		{
			if(alpha[guess[i]-'a'] && !vis[guess[i]-'a'])
			{
				match++;
				vis[guess[i]-'a'] = 1;
			}
			if(!alpha[guess[i]-'a'])
				strokes++;

			if(match == len)
			{
				cout << "You win." << endl;
				flag = 0;
				break;
			}
			if(strokes == 7)
			{
				cout << "You lose." << endl;
				flag = 0;
				break;
			}
		}
		if(flag)
			cout << "You chickened out." << endl;
	}
	return 0;
}

// 694 - The Collatz Sequence
#include <iostream>
#include <cstdio>
using namespace std;
int main(void)
{
	int terms, Case=1;
	long t, A, L;	// 避免中间结果溢出导致无限循环
	while(cin>>t>>L && (t!=-1||L!=-1))
	{
		A = t;
		terms = 1;
		while(A != 1)
		{
			if(A%2) A=3*A+1;
			else A=A/2;

			if(A > L) break;	// larger than limit !
			else terms++;
		}
		printf("Case %d: A = %ld, limit = %ld, number of terms = %d\n", Case++, t, L, terms);
	}
	return 0;
}

// 457 - Linear Cellular Automata
#include <iostream>
#include <cstring>
using namespace std;
int main(void)
{
    int i, j, n, t, p;
    int DNA[10], dish[42];
    cin >> n;
    while(n--)
    {
        for(i=0; i<10; i++)
            cin >> DNA[i];
        memset(dish, 0, sizeof(dish));

        dish[20] = 1;
        cout<<"                   .                    "<<endl;
        for(i=1; i<50; i++)
        {
            p = 0;
            for(j=1; j<=40; j++)
            {
                t = dish[j];
                dish[j] = DNA[p + dish[j] + dish[j+1]];
                p = t;
                switch(dish[j])
                {
                    case 0: cout << ' '; break;
                    case 1: cout << '.'; break;
                    case 2: cout << 'x'; break;
                    case 3: cout << 'W'; break;
                }
            }
            cout << endl;
        }
        if(n != 0) cout << endl;
    }
    return 0;
}


 

posted @ 2014-08-07 16:12  颜威  阅读(105)  评论(0编辑  收藏  举报