天天看點

【Go語言入門100題】017 到底有多二 (15 分) Go語言|Golang

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)  // 兩個%% 第一個%用來轉義第二個%
}