2013西安交大ACM校内赛A题

来源:互联网 发布:找出两张表格不同数据 编辑:程序博客网 时间:2024/06/10 06:00

Description

众所周知,StRcPy()队以人品著称。尤其是他们那神乎其神的随机答案大法一直为坊间津津乐道。这是为什么呢,因为StRcPy()队员行事处处都本着Rp第一的原则。当年在选队长这件大事上更是如此,他们必须让Rp最大的人来当队长!于是他们经过数天的研究,发现一个人的人品和他的ID有着如下关系。

 若x的id为字符串s,则


asc(c)表示着字符c在ASCII编码中的十进制值。 

沙职校长北哥最近正在为了选学生代表而头疼。他听说了StRcPy()有如此高招后,便拜托StRcPy()帮他从学生中选出一个Rp最高的人,好让那人来当代表。但是StRcPy()的队员实在太忙了,于是只好让聪明的你来帮他们做这件事了。

北哥会给出N个学生的id,而你会从StRcPy()那里知道A,B,C的值,你需要找出这些人中Rp最高的人以及那人的Rp。

Input

第一行是一个整数T表示有T组数据。相邻数据用空行分隔。

对于每组数据,               

第一行有四个空格分开的整数依次为N,A,B,C意义如上所示。

接下来的N行的第i行是第i个人的id。

Output

对于每组数据,单独输出一行”Case #X: Y Z”,其中X表示测试数据编号,Y表示Rp最大的那个人的id,Z表示他的Rp。

Sample Input

2
3 1 1 1
stumble
RIVER CRAB
Ply_py
5 10 2 0
Andre
Tedxz
Fredrick
SouthPeace Zheng
Brother Bei

Sample Output

Case #1: stumble 84491
Case #2: SouthPeace Zheng 1563428

Hint

1<=N<=300; 0<=A,B,C<=10

每个人的id中只包含大小写英文字母,空格和下划线,并且长度不超过20。

该数据保证有唯一解。



此题看到就有思路了。。所以不多说,直接上源代码。

#include<stdio.h>#include<stdlib.h>int main(){    int i,j,big,t,a,b,c,n,l;    char id[300][21],temp;    long rp,rr;    scanf("%d\n",&t);    for(l=0;l<t;l++)    {                     if(l!=0)temp=getchar();                     scanf("%d %d %d %d\n",&n,&a,&b,&c);                     for(i=0;i<n;){                                   gets(id[i]);                                   i=i+1;                                   }                     big=0;                     rp=0;                     for(i=0;i<n;)                     {                                     rr=0;                                     for(j=0;(temp=id[i][j])!='\0';j++)rr=rr+c+(a*temp+b)*temp;                                     if(rr>rp){                                               rp=rr;                                               big=i;                                               }                                     i=i+1;                                                       }                     printf("Case #%d: %s %ld\n",l+1,id[big],rp);    }    system("PAUSE");    return 0;    }


原创粉丝点击