L1-017 到底有多二 (15 分) Go語言|Golang
一個整數“犯二的程度”定義為該數字中包含2的個數與其位數的比值。如果這個數是負數,則程度增加0.5倍;如果還是個偶數,則再增加1倍。例如數字-13142223336是個11位數,其中有3個2,并且是負數,也是偶數,則它的犯二程度計算為:3/11×1.5×2×100%,約為81.82%。本題就請你計算一個給定整數到底有多二。
輸入格式:
輸入第一行給出一個不超過50位的整數N。
輸出格式:
在一行中輸出N犯二的程度,保留小數點後兩位。
輸入樣例:
-13142223336
結尾無空行
輸出樣例:
81.82%
• 1
思路:
基礎運算的操作,主要思路是數出這個2的數量,然後再通過判斷是否是偶數和是否是負數,是以
代碼如下:
package main
import (
"fmt"
"strconv"
)
func main() {
var str string
count := 0.0
result := 1.0
_,_=fmt.Scan(&str)
for _,s:=range str { // 周遊一遍這個字元串
if s=='2' { //如果等于'2'的話,就進行計數
count++
}
}
end,_ := strconv.Atoi(string(str[len(str)-1])) // 拿到最後一位,用來判斷奇數還是偶數
lenth:=len(str)
result *= count // 先進行一次運算,再進行下面的判斷去參與運算,不然會導緻有些條件不滿足進而導緻缺少了計算。
if string(str[0])=="-"{ // 如果第一位是負數
result *= 1.5
lenth = len(str)-1
}
if end % 2 == 0 { // 如果最後一位是偶數
result *= 2
}
result = result*100/float64(lenth)
fmt.Printf("%.2f%%",result) // 兩個%% 第一個%用來轉義第二個%
}