100!有多少位十進制數


【題目描述】

100!有多少位十進制數

分析:100!結果很大,我們不能直接算出(c/c++是不行的)它的結果然后再模10,來看它有多少位十進制數。

類似題目:[藍橋杯2016決賽]階乘位數

【通過建模看規律】

image

向下取整:類型強轉(高到低)

double a = 3.7;

int b = (int)a;

那既然講到向下取整,那么就有向下取整(四舍五入)—— + 0.5 即可

【總結】:

整數 m 在 k 進制下的位數為: ⌊ l o g k (m) ⌋ + 1 根據對數計算公式 l o g a (c ∗ d) = l o g a(c) + l o g a (d) 因此使用一個單重循環既可實現。

其它進制位數只需將底數換成對應位數即可

    double a = 3.1; // 3
    double a = 3.7; // 4
    int b = (int)(a+0.5); //向下取整
    cout<< b;

【參考代碼】

#include<iostream>
#include<cmath>

using namespace std;
 
int main()
{   
    double a = 0;
    for(int i = 1; i <= 100 ; i++)
    {
        a += log10(i);
    }
    
    int b = (int)a + 1; //向下取整
    cout<< b;
    
 
    return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM