Description
众所周知,StRcPy()队以人品著称。尤其是他们那神乎其神的随机答案大法一直为坊间津津乐道。这是为什么呢,因为StRcPy()队员行事处处都本着Rp第一的原则。当年在选队长这件大事上更是如此,他们必须让Rp最大的人来当队长!于是他们经过数天的研究,发现一个人的人品和他的ID有着如下关系。
若x的id为字符串s,则
![](http://202.117.21.117/xjoj/uploads/eqn1.jpg)
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;
}