Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
贴一个AC代码吧~求geometric的时候,转换成pow(t1*t2*...*tn, 1/n)比较好一点 用printf完全可以解决输出问题。。 #include <stdio.h> #include <math.h> #include <stdlib.h> #include <string.h> struct node { char name[16]; int tm[7], sum, sol, geo; }; struct node in[24]; int N; int cmp(const void *_a, const void *_b) { struct node *a, *b; a = (struct node *)_a; b = (struct node *)_b; if (a->sol != b->sol) return b->sol - a->sol; if (b->sum != a->sum) return a->sum - b->sum; if (b->geo != a->geo) return a->geo - b->geo; return strcmp(a->name, b->name); } int main() { int c, i, j, r; double e; struct node *t; freopen("e:\\test\\in.txt", "r", stdin); for (c = 1; scanf("%d", &N), N; c++) { for (i = 0; i < N; i++) { t = &in[i]; scanf("%s", t->name); t->sum = t->sol = t->geo = 0; e = 1; for (j = 0; j < 7; j++) { scanf("%d", &t->tm[j]); if (!t->tm[j]) continue; t->sum += t->tm[j]; t->sol++; e *= t->tm[j]; } if (t->sol) t->geo = (int)(pow(e, (double)1/t->sol) + 0.5); } qsort(in, N, sizeof(in[0]), cmp); printf("CONTEST %d\n", c); for (r = i = 0; i < N; i++) { if (i && (in[i].sol != in[i - 1].sol || in[i].sum != in[i - 1].sum || in[i].geo != in[i - 1].geo )) r = i; printf("%.2d %-10s%2d%5d%4d", r + 1, in[i].name, in[i].sol, in[i].sum, in[i].geo ); for (j = 0; j < 7; j++) printf("%4d", in[i].tm[j]); printf("\n"); } } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator