哈尔滨工业大学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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值