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