题目描述
海军学校四年级学生衡量一年级学生是否能开军舰靠的是精神值。
精神值的计算公式如下:
$ value=\frac{D*length}{times} $
其中的value代表的的是一年级学生的精神值,D代表一年级学生说话声音的分贝,length记录的是说话的句子长度,times记录的是说话的时间。
而他们会按照如下方式对一年级学生进行测试:在单位时间内(即times=1)让一年级学生依次进行自我介绍,同时记录他们说话声音的分贝,和自我介绍的内容。
现在四年级学生们已经采集了所有一年级学生的数据,他们想请你找到一年级学生里最有精神的学生(即value最大的学生),并让他开军舰。现在请你帮帮忙。输入格式:
第一行一个正整数n(1≤n≤2⋅10
^4 ),代表一年级学生的人数。
接下来n行,每行输入格式如下:
name D introdutction
其中name为一个长度不超过20的字符串(即1≤∣name∣≤20),D为正整数,且0≤D≤200,introduction为长度不超过100的字符串(即1≤∣introduction∣≤100)。
所有的字符串仅由小写的英文字母组成输出格式:
输出共两行,第一行输出最大的精神值。
第二行按照如下格式输出
XXX:hao!hen you jing shen!
其中XXX请替换成精神值最大的一年级学生的名字。
如果有多个精神值最大的学生,请按照输入顺序依此按上述格式输出一年级学生的名字。输入样例:
1
pingtianyilang 0 aaaaaaa输出样例:
0
pingtianyilang:hao!hen you jing shen!
提示
对于样例,最有精神的学生是pingtianyilang,其精神值为0×6=0
源代码
#include <stdio.h>
#include <math.h>
#include <string.h>
struct member{
char name[21];
int D;
char introduction[101];
}mem[20000];
int main()
{
int n,i,j,value,date[20000];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s %d %s",mem[i].name,&mem[i].D,mem[i].introduction);
date[i]=mem[i].D*strlen(mem[i].introduction);
}
value=date[0];
for(i=0;i<n;i++)
{
if(date[i]>value)
value=date[i];
}
printf("%d\n",value);
for(i=0;i<n;i++)
{
if(date[i]==value)
printf("%s:hao!hen you jing shen!\n",mem[i].name);
}
return 0;
}