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%
總結: 其實這個題我剛開始也不太明白,看到要超過50位的數字我就知道用long long int 是不行的了,這有點大數的味道了。知道方向後用了乙個字元型陣列和乙個一維陣列來寫,當然剛開始用的時候不知道c++裡面的保留小數怎麼用,不得不說度娘是好用,還有乙個問題是把當時那個加黑體字的得分理解錯了,我以為加0.5倍是在原來基礎上加呢,後來看到篇部落格才知道是乘法,不是加法。還有就是不知道後面的double,怎麼輸出都不對,結果發現因為第一位是負數先減了負數的那個位置,怎麼都找不到個位的數字了,最後放前面就好了。還有就是最後一行為什麼要連用兩個double ,這個不太理解。第一次寫部落格 寫的也不太好,裡面我有好多問題我也沒說清楚,以後一定會加油的。下面就是**了:
#include#include#include using namespace std;
int main()
if(b[sum-1]%2==0)//判斷個位是否為偶數
if(b[0]+'0'=='-')//判斷這個數是否為負數
for(int i=0; i}
double n=(double)((double)sum1/sum)*m*100;//把sum1和sum都變成浮點型
cout
}
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...
L1 017 到底有多二 (15 分
乙個整數 犯二的程度 定義為該數字中包含2的個數與其位數的比值。如果這個數是負數,則程度增加0.5倍 如果還是個偶數,則再增加1倍。例如數字 13142223336是個11位數,其中有3個2,並且是負數,也是偶數,則它的犯二程度計算為 3 11 1.5 2 100 約為81.82 本題就請你計算乙個...