哈尔滨工业大学2010年复试上机题 解题报告
2012-03-19 22:28
344 查看
[b]九度OJ
题目1050:完数[/b]
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1711 解决:621
题目描述:
求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子相加和的数。
输入:
测试数据有多组,输入n,n数据范围不大。
输出:
对于每组输入,请输出1-n内所有的完数。如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格。
样例输入:
6
样例输出:
6
用最笨的算法求的因子 并不好 虽然本题也说了n不大 即也不意在考察高效求解因子 但还是得学会高效的方法 留给以后吧
[b]九度OJ 题目1051:数字阶梯求和[/b]
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1502 解决:455
题目描述:
给定a和n,计算a+aa+aaa+a...a(n个a)的和。
输入:
测试数据有多组,输入a,n(1<=a<=9,1<=n<=100)。
输出:
对于每组输入,请输出结果。
样例输入:
1 10
样例输出:
1234567900
简单的大数运算 我的一贯思路都是本题这种:开始时每位都可以大些 然后从低位向高位撸一遍处理进位
[b]九度OJ
题目1052:找x[/b]
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1131 解决:573
题目描述:
输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。
输入:
测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。
输出:
对于每组输入,请输出结果。
样例输入:
2
1 3
0
样例输出:
-1
还有比这题更基础的题目么?
[b]九度OJ
题目1053:互换最大最小数[/b]
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1345 解决:526
题目描述:
输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个数,然后输出。
输入:
测试数据有多组,输入n(1<=n<=20),接着输入n个数。
输出:
对于每组输入,输出交换后的结果。
样例输入:
2
1 3
样例输出:
3 1
[b]九度OJ
题目1054:字符串内排序[/b]
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1040 解决:551
题目描述:
输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。
输入:
测试数据有多组,输入字符串。
输出:
对于每组输入,输出处理后的结果。
样例输入:
bacd
样例输出:
abcd
我很可耻的直接用的STL 于是它成了我的迄今为止最短的AC程序(大概
题目1050:完数[/b]
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1711 解决:621
题目描述:
求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子相加和的数。
输入:
测试数据有多组,输入n,n数据范围不大。
输出:
对于每组输入,请输出1-n内所有的完数。如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格。
样例输入:
6
样例输出:
6
用最笨的算法求的因子 并不好 虽然本题也说了n不大 即也不意在考察高效求解因子 但还是得学会高效的方法 留给以后吧
#include <memory.h> #include <iostream> using namespace std; int perfect[10], num; void init(){ int i, j, k, sum; num=0; for( i=6; i<10000; i++ ){ sum = 1; for( j=2; j<=i/2; j++ ) if( i%j==0 ) sum += j; if( i==sum ) perfect[num++] = i; } } int main() { int i, j, k, m, n; memset(perfect,0,sizeof(perfect)); init(); while( cin >> n ){ if( n < 6 ) cout << "\n"; else{ cout << "6"; i = 0; while( perfect[++i]<=n && i<num ) cout << " " << perfect[i]; cout << endl; } } return 0; }
[b]九度OJ 题目1051:数字阶梯求和[/b]
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1502 解决:455
题目描述:
给定a和n,计算a+aa+aaa+a...a(n个a)的和。
输入:
测试数据有多组,输入a,n(1<=a<=9,1<=n<=100)。
输出:
对于每组输入,请输出结果。
样例输入:
1 10
样例输出:
1234567900
简单的大数运算 我的一贯思路都是本题这种:开始时每位都可以大些 然后从低位向高位撸一遍处理进位
#include <iostream> using namespace std; int c[101]; void init( int a, int n ){ int i, carry; for( i=1; i<=n; i++ ) c[i] = a * i; carry = 0; for( i=n; i>=1; i-- ){ c[i] += carry; carry = c[i] / 10; c[i] %= 10; } c[0] = carry; } int main() { int i, j, k, m, n; int a; while( cin >> a >> n ){ init(a,n); if( c[0]!=0 ) cout << c[0]; for( i=1; i<=n; i++ ) cout << c[i]; cout << endl; } return 0; }
[b]九度OJ
题目1052:找x[/b]
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1131 解决:573
题目描述:
输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。
输入:
测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。
输出:
对于每组输入,请输出结果。
样例输入:
2
1 3
0
样例输出:
-1
还有比这题更基础的题目么?
#include <iostream> using namespace std; int c[200]; int main() { int i, j, k, m, n; int x; while( cin >> n ){ for( i=0; i<n; i++ ) cin >> c[i]; cin >> x; bool found = 0; for( i=0; i<n; i++ ) if( x==c[i] ){ found = 1; break; } if(found) cout << i << endl; else cout << "-1\n"; } return 0; }
[b]九度OJ
题目1053:互换最大最小数[/b]
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1345 解决:526
题目描述:
输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个数,然后输出。
输入:
测试数据有多组,输入n(1<=n<=20),接着输入n个数。
输出:
对于每组输入,输出交换后的结果。
样例输入:
2
1 3
样例输出:
3 1
#include <iostream> using namespace std; int a[20]; int main() { int i, j, k, m, n; int Min, Max, minIndex, maxIndex; while( cin >> n ){ cin >> a[0]; Max = Min = a[0]; minIndex = maxIndex = 0; for( i=1; i<n; i++ ){ cin >> a[i]; if( a[i] > Max ){ Max = a[i]; maxIndex = i; } else if( a[i] < Min){ Min = a[i]; minIndex = i; } } a[maxIndex] = Min; a[minIndex] = Max; for( i=0; i<n-1; i++ ) cout << a[i] << " "; cout << a[n-1] << endl; } return 0; }
[b]九度OJ
题目1054:字符串内排序[/b]
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1040 解决:551
题目描述:
输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。
输入:
测试数据有多组,输入字符串。
输出:
对于每组输入,输出处理后的结果。
样例输入:
bacd
样例输出:
abcd
我很可耻的直接用的STL 于是它成了我的迄今为止最短的AC程序(大概
#include <algorithm> #include <string> #include <iostream> using namespace std; string s; int main() { int i, j, k, m, n; int Min, Max, minIndex, maxIndex; while( cin >> s ){ n = s.length(); char *p = &s[0]; sort(p,p+n); cout << s << endl; } return 0; }
相关文章推荐
- 北京邮电大学2010年网院方向复试上机题 解题报告
- 哈尔滨工业大学2009年复试上机题 解题报告
- 哈尔滨工业大学2011年复试上机题 解题报告
- 北京邮电大学2010年计算机方向复试上机题 解题报告
- 清华大学2010年复试上机题 解题报告
- 浙江大学2010年复试上机题 解题报告
- 2008浙大上机复试解题报告
- 清华大学 2011年研究生复试上机题 解题报告
- 2009浙大上机复试解题报告
- 浙江大学2011年复试上机题 解题报告
- 2010浙大上机复试解题报告
- 清华大学2000年复试上机题 解题报告
- 清华大学2001年复试上机题 第一套 解题报告
- 清华大学2001年复试上机题 第二套 解题报告
- 清华大学2006年复试上机题 解题报告
- 清华大学2007年复试上机题 解题报告
- 浙江大学2007年复试上机题 解题报告
- 清华大学2008年复试上机题 解题报告
- 浙江大学2006年复试上机题 解题报告
- 清华大学2002年复试上机题 第一套 解题报告