L1-056 猜數字 (20 分) Go語言|Golang
一群人坐在一起,每人猜一個 100 以内的數,誰的數字最接近大家平均數的一半就赢。本題就要求你找出其中的赢家。
輸入格式:
輸入在第一行給出一個正整數N(≤10e4)。随後 N 行,每行給出一個玩家的名字(由不超過8個英文字母組成的字元串)和其猜的正整數(≤ 100)。
輸出格式:
在一行中順序輸出:大家平均數的一半(隻輸出整數部分)、赢家的名字,其間以空格分隔。題目保證赢家是唯一的。
輸入樣例1:
7
Bob 35
Amy 28
James 98
Alice 11
Jack 45
Smith 33
Chris 62
結尾無空行
輸出樣例1:
22 Amy
• 1
思路:
設計一個結構體存儲人名和正整數,然後進行判斷。計算出平均數
代碼如下:
package main
import (
"fmt"
"math"
)
type person struct {
Name string
Number float64
}
func main() {
var num float64
sum := 0.0
_,_=fmt.Scan(&num)
var personList [1000]person
for i:=0;i<int(num);i++ {
_, _ = fmt.Scan(&personList[i].Name, &personList[i].Number)
sum += personList[i].Number
}
sum = sum/num/2 // 平均數的一半
var ans person
minute := math.Abs(personList[0].Number-sum)
ans = personList[0]
for _,item := range personList[:int(num)]{
if math.Abs(item.Number-sum)<minute {
minute = item.Number-sum
ans = item
}
}
fmt.Printf("%d %s",int(sum),ans.Name)
}