Volume 1 / 0136->0138

パソコン甲子園2006本選 解答

Problem 0136 : Frequency Distribution of Height

これまでSuccess:100%だったから、Submitするとき無駄に緊張した。
僕が失敗すると100%じゃなくってしまうわけで……。

#include <iostream>

using namespace std;


int main(void)
{
	int n, i, j;
	int a[6] = {0};
	double input;

	cin >> n;
	for( i=0; i<n; i++ ){
		cin >> input;
		if( input < 165.0 ){
			a[0]++;
		} else if( input < 170.0 ){
			a[1]++;
		} else if( input < 175.0 ){
			a[2]++;
		} else if( input < 180.0 ){
			a[3]++;
		} else if( input < 185.0 ){
			a[4]++;
		} else {
			a[5]++;
		}
	}

	for( i=0; i<6; i++ ){
		cout << i+1 << ":";
		for( j=0; j<a[i]; j++ ){
			cout << "*";
		}
		cout << endl;
	}

	return 0;
}

Problem 0137 : Middle-Square Method

#include <iostream>

using namespace std;


int main(void)
{
	unsigned int n, s;
	int i, j, k, work[8];
	int table[4] = { 1, 10, 100, 1000 };

	cin >> n;
	for( i=1; i<=n; i++ ){
		cin >> s;
		cout << "Case " << i << ":" << endl;
		for( j=0; j<10; j++ ){
			for( k=0; k<8; k++ )
				work[k] = 0;

			s *= s; k = 0;
			while( s>0 && k<8 ){
				work[k++] = s%10;
				s /= 10;
			}

			s = 0;
			for( k=0; k<4; k++ )
				s += work[2+k]*table[k];
			cout << s << endl;
		}
	}
	return 0;
}

Problem 0138 : Track and Field Competition

coutで小数点以下2桁を0で埋めて出力するやり方(23.00みたいに)が思い出せなかったので、printfで代用。
ごっちゃにするのはよくないんだろうなぁと思いつつ……。

#include <iostream>
#include <limits.h>

using namespace std;


struct p_tag {
	int num;
	double time;
} P[3][8], tmp;

void sort()
{
	int i, j, k;
	for( i=0; i<3; i++ ){
		for( j=0; j<8; j++ ){
			for( k=j+1; k<8; k++ ){
				if( P[i][j].time > P[i][k].time ){
					tmp = P[i][j];
					P[i][j] = P[i][k];
					P[i][k] = tmp;
				}
			}
		}
	}

	return;
}


int main(void)
{
	int i, j, min;

	for( i=0; i<3; i++ )
		for( j=0; j<8; j++ )
			cin >> P[i][j].num >> P[i][j].time;

	sort();

	for( i=0; i<3; i++ )
		for( j=0; j<2; j++ )
			printf("%d %.2f\n", P[i][j].num, P[i][j].time );


	for( i=0; i<2; i++ ){
		min = 0;
		for( j=1; j<3; j++ )
			if( P[min][2].time > P[j][2].time )
				min = j;
		printf("%d %.2f\n", P[min][2].num, P[min][2].time );
		P[min][2].time = INT_MAX;
	}

	return 0;
}