比赛 |
20111111 |
评测结果 |
EEEEEEEEEE |
题目名称 |
吉祥数 |
最终得分 |
100 |
用户昵称 |
fanzeyi |
运行时间 |
0.000 s |
代码语言 |
C |
内存使用 |
0.00 MiB |
提交时间 |
2011-11-11 10:00:48 |
显示代码纯文本
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1000
typedef struct {
int num;
int now;
int chuju;
} Num;
int n;
int p;
int result[MAX];
Num num[MAX];
int mypow(int a, int b) {
int ans = 1;
int i;
for(i = 0; i < b; i++) {
ans = ans * a;
}
return ans;
}
int NewNum(int a, int times) {
int bai = a / 100;
int shi = a % 100 / 10;
int ge = a % 10;
return mypow(bai, times) + mypow(shi, times) + mypow(ge, times);
}
int Check(int a) {
int i;
for(i = 0; i < p; i++) {
if(num[i].chuju != 2 && a == num[i].now){
return 1;
}
}
return 0;
}
int cmp(const void *a, const void *b) {
return *(int*)a - *(int*)b;
}
int main(int argc, char const *argv[]) {
FILE *fin = fopen("ghillie.in", "r");
FILE *fout = fopen("ghillie.out", "w");
int i, j;
int a = 0;
p = 0;
memset(num, 0, sizeof(num));
fscanf(fin, "%d", &n);
while(fscanf(fin, "%d", &num[p].num) != -1) {
num[p].now = num[p].num;
p = p + 1;
}
for(i = 0; i < n; i++) {
for(j = 0; j < p; j++) {
if(num[j].chuju != 2) {
num[j].now = NewNum(num[j].num, i + 2);
}
} // 计算新数字
for(j = 0; j < p; j++) {
if(num[j].chuju != 2) {
if(Check(num[j].num)) {
num[j].chuju = 1;
}
}
}// 检查出局的
for(j = 0; j < p; j++) {
if(num[j].chuju == 1) {
num[j].chuju = 2;
}
}
}
a = 0;
for(i = 0; i < p; i++) {
if(num[i].chuju != 2) {
result[a++] = num[i].num;
}
}
qsort(result, a, sizeof(result[0]), cmp);
for(i = 0; i < a; i++) {
fprintf(fout, "%d ", result[i]);
}
return 0;
}