|
Posted on 2011-09-17 16:04 Uriel 阅读(310) 评论(0) 编辑 收藏 引用 所属分类: 考研&保研复试上机题
继续砍各种大水题练手速... 1. 完数
//2010年哈尔滨工业大学计算机研究生机试题 完数 #include<stdio.h> #include<stdlib.h> #include<string.h>
int main() { int i, j, m, n, fg; while(~scanf("%d", &n)) { fg = 0; for(i = 1; i <= n; ++i) { m = 0; for(j = 1; j < i; ++j) { if(i % j == 0) m += j; } 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>
int b[1000], a, n;
int main() { int i, cf; while(~scanf("%d %d", &a, &n)) { memset(b, 0, sizeof(b)); for(i = 0; i < n; ++i) b[i] = a * (n - i); cf = 0; for(i = 0; i < n; ++i) { b[i] += cf; cf = b[i] / 10; b[i] %= 10; } 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;
struct M{ int id, x; }p[210];
bool cmp(M a, M b) { return a.x < b.x; }
int main() { int i, c, f, n; while(~scanf("%d", &n)) { 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; while(l <= r) { mid = (l + r) >> 1; 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
int mi, ma, fi, fa, n, a[25];
int main() { int i; while(~scanf("%d", &n)) { mi = INF, ma = -INF; for(i = 0; i < n; ++i) { scanf("%d", &a[i]); if(a[i] < mi) { fi = i; mi = a[i]; } 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;
char s[210];
int main() { int l; while(gets(s) != NULL) { l = strlen(s); sort(s, s + l); puts(s); } return 0; }
|