好!很有精神! (10分)
阿新 • • 發佈:2021-01-28
題目描述
海軍學校四年級學生衡量一年級學生是否能開軍艦靠的是精神值。
精神值的計算公式如下:
$ 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;
}