清华大学 2000年研究生复试上机题 解题报告

原创 2013年02月15日 00:54:31
题目1058:反序输出

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:3478

解决:1092

题目描述:

输入任意4个字符(如:abcd), 并按反序输出(如:dcba)

输入:

题目可能包含多组用例,每组用例占一行,包含4个任意的字符。

输出:

对于每组输入,请输出一行反序后的字符串。
具体可见样例。

样例输入:
Upin
cvYj
WJpw
cXOA
样例输出:
nipU
jYvc
wpJW
AOXc
来源:
2000年清华大学计算机研究生机试真题
//注意用栈来做反序输出,我认为是漂亮的做法
#include <stdio.h>
#include <stack>
using namespace std;
int main(){
    char str[10];
    char ans[10];
    stack<int> stack1;
    while(scanf("%s",str) != EOF){
                          int i ;
                          for(i = 0;str[i] != 0;i++){
                               stack1.push(i);
                          }
                          int j = 0;
                          while(!stack1.empty()){
                                            //这里值得注意 
                                          ans[j] = str[stack1.top()];
                                          stack1.pop();
                                          j++;
                          }
                          ans[j] = 0;
                          puts(ans);
    }
    return 0;
}

题目84:abc

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:1134

解决:895

题目描述:

设a、b、c均是0到9之间的数字,abc、bcc是两个三位数,且有:abc+bcc=532。求满足条件的所有a、b、c的值。

输入:

题目没有任何输入。

输出:

请输出所有满足题目条件的a、b、c的值。
a、b、c之间用空格隔开。
每个输出占一行。

样例输入:

样例输出:
//可以根据自己的预先推算出
// a <= 5, c = 1或者6 

#include <iostream>  
#include <stdio.h>
#include <math.h>
 
using namespace std; 
int main(){
	int sum = 0;
	char space = ' ';//因为要求a,b,c要以空格隔开,这里对空格的处理,比较好 
	for(int a = 0; a <= 9; a++){
		for(int b =0;b <= 9; b++){
			for(int c = 0; c<= 9; c++){
				sum = (a*100 + b*10 + c) + (b*100 + c*10 + c);
				if(sum == 532)printf("%d%c%d%c%d\n",a,space,b,space,c);
			}
		}
	}
	//system("pause");
	return 0;
}

//所以代码可以改进,这样代码会变的更快 
#include <iostream>  
#include <stdio.h>
#include <math.h>
 
using namespace std; 
int main(){
	int sum = 0;
	char space = ' ';//这个题这里对空格的处理,比较好 
    int c[2] = { 1, 6 }; 
	for(int a = 0; a <= 5; a++){
		for(int b =0;b <= 9; b++){
			for(int k = 0; k <= 2; c++){
				sum = (a*100 + b*10 + c[k]) + (b*100 + c[k]*10 + c);
				if(sum == 532)printf("%d%c%d%c%d\n",a,space,b,space,c);
			}
		}
	}
	//system("pause");
	return 0;
}
 


题目1060:完数VS盈数

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:2181

解决:754

题目描述:

一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1。则称其为“完数”;若因子之和大于该数,

则称其为“盈数”。
求出2到60之间所有“完数”和“盈数”。

输入:

题目没有任何输入。

输出:

输出2到60之间所有“完数”和“盈数”,并以如下形式输出:
E: e1 e2 e3 ......(ei为完数)
G: g1 g2 g3 ......(gi为盈数)
其中两个数之间要有空格,行尾不加空格。

样例输入:

样例输出:

来源:
2000年清华大学计算机研究生机试真题
/*人一我百,人十我万,我要做AC小公主 
因为数不是很大,就从2到60遍历,找出每一个数的因数,并将每一个数的因数保存于一个数组中
再对数组中的数相加,若大于次数,则为盈数,将其存于盈数数组中
若等于此数,则次数为完数,将其存于完数的数组中*/ 

#include <stdio.h>
#include <math.h>
//#include <iostream>
//using namespace std;
int main(){
	int wanshu[60];
	int yingshu[60];
	int wanshucnt = 0;
	int yingshucnt = 0;
	int d[60];//用于存一个数的因数
	int index;//因数的索引号
	for(int i = 2; i <= 60; i++){	//开始找每一个数的因数
		index = 0;
		int sum = 0;//计算此数除本身以外所有因数的和
		for(int j = 1; j < i; j++){
			if( i % j == 0){
				d[index++] = j;//j为i的因数
				sum += j;
			}
		}
		if(sum == i)wanshu[wanshucnt++] = i;//i为完数
		if(sum > i)yingshu[yingshucnt++] = i;//i为盈数
	}
	//输出完数及盈数,注意其中两个数之间要有空格(printf("E: %d",wanshu[0]);
	printf("E: %d",wanshu[0]);
	for(int i = 1; i < wanshucnt;i++)
		printf(" %d",wanshu[i]);printf("E: %d",wanshu[0]);
	for(int i = 1; i < wanshucnt;i++)
		printf(" %d",wanshu[i]);
	printf("\n");
	printf("G: %d",yingshu[0]);
	for(int i = 1; i < yingshucnt;i++)
		printf(" %d",yingshu[i]);
	//system("pause");
	return 0;
}

题目2:成绩排序

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:3284

解决:723

题目描述:

    有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,如果姓名的

字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息。

输入:

    测试数据有多组,每组输入第一行有一个整数N(N<=1000),接下来的N行包括N个学生的数据。
    每个学生的数据包括姓名(长度不超过100的字符串)、年龄(整形数)、成绩(小于等于100的正数)。

输出:

    将学生信息按成绩进行排序,成绩相同的则按姓名的字母序进行排序。
    然后输出学生信息,按照如下格式:
    姓名 年龄 成绩

样例输入:
3
abc 20 99
bcd 19 97
bed 20 97
样例输出:
bcd 19 97
bed 20 97
abc 20 99
提示:

学生姓名的字母序区分字母的大小写,如A要比a的字母序靠前(因为A的ASC码比a的ASC码要小)。

/*难点,怎么样用已知算法的来排序
记住:sort(student,student+n,cmp);//利用自己定义的规则对数组进行排序
if(tmp != 0) return tmp < 0;// not return a.name < b.name;*/ 

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <algorithm>
#include <iostream>
using namespace std;

struct E{//用结构体很适合 
	char name[101];//字符串结尾符的存储,所以101 
	unsigned int age;//要求输入的是正数,所以unsigned
	unsigned int score;
}student[1000];
bool cmp(E a, E b){//实现比较规则
	if(a.score != b.score) return a.score < b.score;
	int tmp = strcmp(a.name,b.name);
	if(tmp != 0) return tmp < 0;//返回的是布尔值,而不能return a.name < b.name;
	else return a.age < b.age;
}

int main(){
	int n;
	char space = ' ';
	//freopen("THU_1061.txt", "r", stdin);//用于测试,在上机时是个不错的测试方法
	while(scanf("%d",&n) != EOF){
		for(int i = 0; i < n; i++){
			scanf("%s%d%d",&student[i].name,&student[i].age,&student[i].score);
		}
		sort(student,student + n, cmp);
		for(int i = 0; i < n; i++){
			printf("%s%c%d%c%d\n",student[i].name,space,student[i].age,space,
student[i].score);
		}
	}
    //fclose(stdin);
    // while(1);
	return 0;
}


hdu 4416 水题 浙大计算机研究生复试上机考试-2005年 可是发现自己写代码有问题

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1228 1、 没读清题就交-----a==0 && b==0 我以为zero zero借书 2、范围估计...
  • u011026968
  • u011026968
  • 2014年05月21日 22:40
  • 785

浙大计算机研究生复试上机考试2005年 A+B

A + B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm...
  • guodongxiaren
  • guodongxiaren
  • 2013年08月12日 13:38
  • 1182

HDU1877 又一版A+B 浙大计算机研究生复试上机考试-2008年

这一道题实际上就是一道进制转换题,有一个坑就是int +int 可能会超出Int的限制,所以直接使用long long.解决这道题目以后任何进制转换也就迎刃而解了 #include using...
  • wzxshhz123
  • wzxshhz123
  • 2017年03月25日 23:29
  • 124

清华大学2000年复试上机题 解题报告

九度OJ 题目1058:反序输出 时间限制:1 秒  内存限制:32 兆  特殊判题:否  提交:1171  解决:346 题目描述:     输入任意4个字符(如:abcd), 并按反序输...
  • PythonFX
  • PythonFX
  • 2012年03月05日 19:56
  • 1557

浙江大学2005年计算机考研上机复试

题目一--A+B:读入两个小于100的正整数A和B,计算A+B.需要注意的是:A和B的每一位数字由对应的英文单词给出.Input测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",...
  • guosong421
  • guosong421
  • 2008年04月03日 15:07
  • 852

浙江大学研究生2005年上机题java实现

题目来源:http://ac.jobdu.com/oldexamset.php 题目描述:     读入两个小于100的正整数A和B,计算A+B.     需要注意的是:A和B的每一位数字由对应的英...
  • fengsigaoju
  • fengsigaoju
  • 2017年02月14日 21:20
  • 328

北京大学推免生机考D题 POJ - 1321

C - 北京大学推免生机考D题Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%lld & %llu Submit...
  • yinghui_yht
  • yinghui_yht
  • 2017年02月02日 09:44
  • 149

清华大学2007年复试上机题 解题报告

九度OJ 题目1207:质因数的个数 时间限制:1 秒  内存限制:32 兆  特殊判题:否  提交:699  解决:122 题目描述:     求正整数N(N>1)的质因数的个数。   ...
  • PythonFX
  • PythonFX
  • 2012年03月05日 22:17
  • 962

清华大学2003年复试上机题 解题报告

九度OJ 题目1068:球的半径和体积 时间限制:1 秒  内存限制:32 兆  特殊判题:否  提交:602  解决:198 题目描述:     输入球的中心点和球上某一点的坐标,计算球的...
  • PythonFX
  • PythonFX
  • 2012年03月05日 20:40
  • 1043

清华大学2011年复试上机题 解题报告

九度OJ 题目1088:剩下的树 时间限制:1 秒  内存限制:32 兆  特殊判题:否  提交:929  解决:328 题目描述:         有一个长度为整数L(1        ...
  • PythonFX
  • PythonFX
  • 2012年03月05日 22:50
  • 1617
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:清华大学 2000年研究生复试上机题 解题报告
举报原因:
原因补充:

(最多只允许输入30个字)