繼續(xù)砍各種大水題練手速...
1. 完數(shù)
//2010年哈爾濱工業(yè)大學計算機研究生機試題 完數(shù)
#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. 數(shù)字階梯求和
算是小小的高精吧... C++還WA了一次... 忘記初始化了... 然后JAVA水了一下
//2010年哈爾濱工業(yè)大學計算機研究生機試題 數(shù)字階梯求和
#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一次... 數(shù)據(jù)量暴小, 或許暴力還更快些
//2010年哈爾濱工業(yè)大學計算機研究生機試題 找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. 互換最大最小數(shù)
//2010年哈爾濱工業(yè)大學計算機研究生機試題 互換最大最小數(shù)
#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. 字符串內(nèi)排序
//2010年哈爾濱工業(yè)大學計算機研究生機試題 字符串內(nèi)排序
#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;
}
1. 完數(shù)
























2. 數(shù)字階梯求和
算是小小的高精吧... C++還WA了一次... 忘記初始化了... 然后JAVA水了一下




























3. 找x
上sort+二分了... 結果看錯題意還WA一次... 數(shù)據(jù)量暴小, 或許暴力還更快些










































4. 互換最大最小數(shù)





























5. 字符串內(nèi)排序

















