PTA L1 017 到底有多二 15分

2021-10-08 13:21:09 字數 1589 閱讀 1137

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

%

#include

#include

#include

using

namespace std;

intmain()

} ans=

double

(cnt)

/double

(s.length()

);if(s[s.

length()

-1]==

'0'||s[s.

length()

-1]==

'2'||s[s.

length()

-1]==

'4'||s[s.

length()

-1]==

'6'||s[s.

length()

-1]==

'8')

ans*

=100

; cout<<

setiosflags

(ios::fixed)

<<

setprecision(2

)<"%"<}// else if(s[0]=='-')

} ans=

double

(cnt)

/double

(s.length()

-1);

if(s[s.

length()

-1]==

'0'||s[s.

length()

-1]==

'2'||s[s.

length()

-1]==

'4'||s[s.

length()

-1]==

'6'||s[s.

length()

-1]==

'8')

ans*

=1.5

*100

; cout<<

setiosflags

(ios::fixed)

<<

setprecision(2

)<"%"<}return0;

}

看了輸入50位整數,就想著用long long讀入,轉為string,最後乙隻有幾個點過不了,查了下,才知道2的64次方大概才19位,遠遠小於50位,,直接string讀入吧,

PTA L1 017 到底有多二 15 分

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

L1 017 到底有多二 (15 分)

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

L1 017 到底有多二 (15 分)

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