哈爾濱工業大學2009年複試上機題 解題報告

九度OJ 題目1045:百雞問題
時間限制:1 秒  內存限制:32 兆  特殊判題:否  提交:1865  解決:685
題目描述:
        用小於等於n元去買100只雞,大雞5元/只,小雞3元/只,還有1/3元每隻的一種小雞,分別記爲x只,y只,z只。編程求解x,y,z所有可能解。
輸入:
        測試數據有多組,輸入n。
輸出:
        對於每組輸入,請輸出x,y,z所有可行解,按照x,y,z依次增大的順序輸出。
樣例輸入:
    40
樣例輸出:
    x=0,y=0,z=100
    x=0,y=1,z=99
    x=0,y=2,z=98
    x=1,y=0,z=99
#include <fstream>
#include <iostream>
using namespace std;

void output( int x, int y, int z ){
	cout << "x=" << x << ",y=" << y << ",z=" << z << endl;
}

int main()
{
	int i, j, k, m, n;
	int a=15, b=9, c=1;
	int x, y, z;
	ifstream cin("HIT_1045.txt");//
	while( cin >> n ){
		n *= 3;	//所有數據放大3倍 避免小雞1/3的除法
		bool flag = 0;
		for( x=0; x<100; x++ ){
			for( y=0; y<100; y++ ){
				z = 100 - x - y;
				if( x*a + y*b + z*c <= n ){
					output(x,y,z);
					continue;
				}
				if( y==0 )
					flag = 1;
				break;
			}
			if( flag ) break;
		}
	}
	system("pause");//
	return 0;
}


九度OJ 題目1046:求最大值
時間限制:1 秒  內存限制:32 兆  特殊判題:否  提交:2027  解決:790
題目描述:
    輸入10個數,要求輸出其中的最大值。
輸入:
    測試數據有多組,每組10個數。
輸出:
    對於每組輸入,請輸出其最大值(有回車)。
樣例輸入:
    10 22 23 152 65 79 85 96 32 1
樣例輸出:
    max=152
#include <cstdio>
#include <iostream>
using namespace std;

int main()
{
    int i, m, a;
    while( scanf("%d",&m)==1 ){
        for( i=1; i<10; i++ ){
            scanf("%d",&a);
            if( a > m ) m = a;
        }
        printf("max=%d\n",m);
    }
    
    return 0;
}


九度OJ 題目1047:素數判定
時間限制:1 秒  內存限制:32 兆  特殊判題:否  提交:1575  解決:690
題目描述:
    給定一個數n,要求判斷其是否爲素數(0,1,負數都是非素數)。
輸入:
    測試數據有多組,每組輸入一個數n。
輸出:
    對於每組輸入,若是素數則輸出yes,否則輸入no。
樣例輸入:
    13
樣例輸出:
    yes
#include <memory.h>
#include <cstdio>
#include <cmath>
#include <iostream>
using namespace std;
#define N 1000000
#define d 1000
bool prime[N];

void init(){
	int i, j;
	memset(prime,0,sizeof(prime));
	for( i=2; i<d; i++ )
		for( j=2; i*j<N; j++ )
			prime[i*j] = 1;
}

int main()
{
	int i, j, k, m, n;
	bool notInit = 1;
	while( scanf("%d",&n)==1 ){
		if( n < 2 ){
			printf("no\n");
			continue;
		}

		if( n < 10000 && notInit ){
			float f = sqrt(1.0*n);
			bool flag = 1;
			for( i=2; i<f; i++ )
				if( n%i == 0 ){
					printf("no\n");
					flag = 0;
					break;
				}
			if(flag) printf("yes\n");
			continue;
		}

		if( notInit ){
			init();
			notInit = 0;
		}

		if( prime[n]!=1 )
			printf("yes\n");
		else printf("no\n");
	}
	//while(1);//
	return 0;
}


九度OJ 題目1048:判斷三角形類型
時間限制:1 秒  內存限制:32 兆  特殊判題:否  提交:1161  解決:583
題目描述:
    給定三角形的三條邊,a,b,c。判斷該三角形類型。
輸入:
    測試數據有多組,每組輸入三角形的三條邊。
輸出:
    對於每組輸入,輸出直角三角形、銳角三角形、或是鈍角三角形。
樣例輸入:
    3 4 5
樣例輸出:
    直角三角形
#include <algorithm>
#include <iostream>
using namespace std;

int main()
{
	int i, j, k, m, n;
	int a[3];
	while( cin >> a[0] >> a[1] >> a[2] ){
		sort(a,a+3);
		m = a[0]*a[0] + a[1]*a[1];
		n = a[2]*a[2];
		if( m < n )
			cout << "鈍角三角形\n";
		else if( m > n )
			cout << "銳角三角形\n";
		else cout << "直角三角形\n";
	}
	//while(1);//
	return 0;
}


九度OJ 題目1049:字符串去特定字符
時間限制:1 秒  內存限制:32 兆  特殊判題:否  提交:1607  解決:707
題目描述:
    輸入字符串s和字符c,要求去掉s中所有的c字符,並輸出結果。
輸入:
    測試數據有多組,每組輸入字符串s和字符c。
輸出:
    對於每組輸入,輸出去除c字符後的結果。
樣例輸入:
    heallo
    a
樣例輸出:
    hello
#include <iostream>
using namespace std;

int main()
{
	int i, j, k, m, n;
	string s;
	char c;
	while( cin >> s ){
		cin >> c;
		m = s.length();
		for( i=0; i<m; i++ )
			if( s[i]!=c )
				cout << s[i];
		cout << endl;
	}
	//system("pause");
	return 0;
}


發佈了43 篇原創文章 · 獲贊 4 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章