遞迴訓練 到底有多二(簡單遞迴)

2021-09-11 18:36:22 字數 1062 閱讀 6188

l1-017 到底有多二 (15 分)

乙個整數「犯二的程度」定義為該數字中包含2的個數與其位數的比值。如果這個數是負數,則程度增加0.5倍;如果還是個偶數,則再增加1倍。例如數字-13142223336是個11位數,其中有3個2,並且是負數,也是偶數,則它的犯二程度計算為:3/11×1.5×2×100%,約為81.82%。本題就請你計算乙個給定整數到底有多二。

輸入格式:

輸入第一行給出乙個不超過50位的整數n。

輸出格式:

在一行中輸出n犯二的程度,保留小數點後兩位。

輸入樣例:

-13142223336

輸出樣例:

81.82%

【思路】

思路上沒什麼難的,設函式f(n)表示字串前n位中字元2的個數。

遞推式:f(n) = f(n - 1) + a[n] == 『2』 ? 1 : 0;

然後就是一些細節處理了

ac**:

#include

using namespace std;

bool fu = false;

//標記是否為負數

string s;

double res =1;

intf

(int n)

//計算 字串中2的個數

else

if(s[n]

=='2'

)else}if

(s[n]

=='2'

)return

f(n -1)

+1;else

return

f(n -1)

;}intmain()

int num =

f(len -1)

;//記錄2的個數

double x;

if(fu)

else

x *= res;

x *=100

;printf

("%.2f%%\n"

, x)

;return0;

}

到底有多二

7 3 到底有多二 15 分 乙個整數 犯二的程度 定義為該數字中包含2的個數與其位數的比值。如果這個數是負數,則程度增加0.5倍 如果還是個偶數,則再增加1倍。例如數字 13142223336是個11位數,其中有3個2,並且是負數,也是偶數,則它的犯二程度計算為 3 11 1.5 2 100 約為...

到底有多二

l1 017 到底有多二 15 分 乙個整數 犯二的程度 定義為該數字中包含2的個數與其位數的比值。如果這個數是負數,則程度增加0.5倍 如果還是個偶數,則再增加1倍。例如數字 13142223336是個11位數,其中有3個2,並且是負數,也是偶數,則它的犯二程度計算為 3 11 1.5 2 100...

到底有多二

乙個整數 犯二的程度 定義為該數字中包含2的個數與其位數的比值。如果這個數是負數,則程度增加0.5倍 如果還是個偶數,則再增加1倍。例如數字 13142223336是個11位數,其中有3個2,並且是負數,也是偶數,則它的犯二程度計算為 3 11 1.5 2 100 約為81.82 本題就請你計算乙個...