時間限制:
3000 ms | 記憶體限制:
65535 kb
難度:1 描述
n!階乘是乙個非常大的數,大家都知道計算公式是n!=n*(n-1)······*2*1.現在你的任務是計算出n!的位數有多少(十進位制)?
輸入
首行輸入n,表示有多少組測試資料(n<10)
隨後n行每行輸入一組測試資料 n( 0 < n < 1000000 )
輸出對於每個數n,輸出n!的(十進位制)位數。
樣例輸入
31332000
樣例輸出
11130271
//方法1:log10(n!)=log10(1)+log10(2)+...+log10(n)
#include#includeusing namespace std;
int main()
{ int n,m,i;
double sum;
cin>>n;
while(n--)
{cin>>m;
sum=0;
for(i=1;i<=m;i++)
sum+=log10(i);
cout<<(int)sum+1<#includeusing namespace std;
int main()
{ int n,m,i;
double sum;
cin>>n;
while(n--)
{cin>>m;
if(m==1)
cout<<1<
南陽 69 數的長度
stirling公式 斯特林公式 n!1 2 3 4 5 n 如果要計算n!後得到的位數,則我們可以知道其等於lgn!1 lgn!lg1 lg2 lg3 lg4 lg5 lgn 但是當n很大的時候,我們可以通過數學公式進行優化 即stirling公式 n!sqrt 2 pi n n e n pi 3...
NYOJ 69 數的長度
時間限制 3000 ms 記憶體限制 65535 kb難度 1 描述 n!階乘是乙個非常大的數,大家都知道計算公式是n n n 1 2 1.現在你的任務是計算出n!的位數有多少 十進位制 輸入 首行輸入n,表示有多少組測試資料 n 10 隨後n行每行輸入一組測試資料 n 0 n 1000000 輸出...
nyoj 69 數的長度
時間限制 3000 ms 記憶體限制 65535 kb 難度 1描述 n!階乘是乙個非常大的數,大家都知道計算公式是n n n 1 2 1.現在你的任務是計算出n!的位數有多少 十進位制 輸入 首行輸入n,表示有多少組測試資料 n 10 隨後n行每行輸入一組測試資料 n 0 n 1000000 輸出...