|
Posted on 2011-09-17 16:04 Uriel 阅读(314) 评论(0) 编辑 收藏 引用 所属分类: 考研&保研复试上机题
继续砍各种大水题练手速... 1. 完数
//2010年哈尔滨工业大学计算机研究生机试题 完数
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif) int main() {
int i, j, m, n, fg;
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) while(~scanf("%d", &n)) {
fg = 0;
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) for(i = 1; i <= n; ++i) {
m = 0;
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) for(j = 1; j < i; ++j) {
if(i % j == 0) m += j;
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) if(m == i) {
if(fg) putchar(' ');
printf("%d", i);
fg = 1;
}
}
puts("");
}
return 0;
}2. 数字阶梯求和 算是小小的高精吧... C++还WA了一次... 忘记初始化了... 然后JAVA水了一下
//2010年哈尔滨工业大学计算机研究生机试题 数字阶梯求和
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
![](/Images/OutliningIndicators/None.gif)
int b[1000], a, n;
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif) int main() {
int i, cf;
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) while(~scanf("%d %d", &a, &n)) {
memset(b, 0, sizeof(b));
for(i = 0; i < n; ++i) b[i] = a * (n - i);
cf = 0;
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) for(i = 0; i < n; ++i) {
b[i] += cf;
cf = b[i] / 10;
b[i] %= 10;
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) while(cf) {
b[i++] = cf % 10;
cf /= 10;
}
for(; !b[i]; --i);
for(; i >= 0; --i) printf("%d", b[i]);
puts("");
}
return 0;
}3. 找x 上sort+二分了... 结果看错题意还WA一次... 数据量暴小, 或许暴力还更快些
//2010年哈尔滨工业大学计算机研究生机试题 找x
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
using namespace std;
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif) struct M {
int id, x;
}p[210];
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif) bool cmp(M a, M b) {
return a.x < b.x;
}
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif) int main() {
int i, c, f, n;
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) while(~scanf("%d", &n)) {
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) for(i = 0; i < n; ++i) {
scanf("%d", &p[i].x);
p[i].id = i;
}
sort(p, p + n, cmp);
scanf("%d", &c);
int l = 0, r = n - 1, mid;
f = 0;
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) while(l <= r) {
mid = (l + r) >> 1;
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) if(p[mid].x == c) {
f = 1;
break;
}
else if(p[mid].x > c) r = mid - 1;
else
l = mid + 1;
}
if(f) printf("%d\n", p[mid].id);
else
puts("-1");
}
return 0;
}4. 互换最大最小数
//2010年哈尔滨工业大学计算机研究生机试题 互换最大最小数
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define INF 0x3f3f3f3f
![](/Images/OutliningIndicators/None.gif)
int mi, ma, fi, fa, n, a[25];
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif) int main() {
int i;
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) while(~scanf("%d", &n)) {
mi = INF, ma = -INF;
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) for(i = 0; i < n; ++i) {
scanf("%d", &a[i]);
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) if(a[i] < mi) {
fi = i;
mi = a[i];
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) if(a[i] > ma) {
fa = i;
ma = a[i];
}
}
a[fa] ^= a[fi] ^= a[fa] ^= a[fi];
for(i = 0; i < n-1; ++i) printf("%d ", a[i]);
printf("%d\n", a[n - 1]);
}
return 0;
}5. 字符串内排序
//2010年哈尔滨工业大学计算机研究生机试题 字符串内排序
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
using namespace std;
![](/Images/OutliningIndicators/None.gif)
char s[210];
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif) int main() {
int l;
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) while(gets(s) != NULL) {
l = strlen(s);
sort(s, s + l);
puts(s);
}
return 0;
}
|