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...