hdu 1042 大數階乘20140730 c

2021-06-23 01:14:03 字數 1048 閱讀 2834

題目大意

求n!,其中n的數值比較大,0<=n=10000,多組數,每組乙個n,要求輸出n!。

解題分析:

這道題沒有思路,是大數相乘的結果,看過別人的**,知道可以用萬進製儲存計算。

萬進製,舉個例子說明:107924372*15,107924372這個數用完進製存,四個數字佔一位,一共佔三位,a[0]=4372,a[1]=792,a[2]=1.

接下來乘起來,a[0]=4327*15=65580,a[1]=792*15=11880,a[2]=1*15=15。

然後進製:a[0]=65580%10000=5580,進6,a[1]=(11880+6)%10000=1886,進1,a[2]=16

最後按從低位到高位輸出的順序,輸出結果為1618865580.假如當a[1]=886,而萬進製每一位有4位數,那麼需要在高位補0,及輸出1608865580。

對於這道題,具體見注釋

**:

#include

int main()

;m=0;

a[0]=1;

for(i=1;i<=n;i++)//階乘

for(j=0;j<=m;j++)//控制萬進製的位數

if(a[m]>=10000)

m++;

}printf("%d",a[m]);//輸出最高位

for(i=m-1;i>=0;i--)//從倒數第二高位開始往下輸出

printf("%04d",a[i]);  //0代表在指定寬度的同時,輸出資料左邊處填0

printf("\n");}

return 0;   

}

HDU 1042 大數的階乘(萬進製)

望各位大佬指點指點given an integer n 0 n 10000 your task is to calculate n inputone n in one line,process to the end of file.outputfor each n,output n in one l...

hdu1042(大數乘法 )

計算n!1 n 10000 在去南昌icpc邀請賽之前,勳宇帶著我們做過大數的題,剛好也是這個題。而我影響最深刻的就是運用到萬進製,顧名思義,以一萬為進製,因為n!是個很大的數,所以只能用陣列去存。需要注意的是列印時,倒敘且 04d,不足的用零去補。附上 include include void f...

大數階乘(萬進製)(HDU 1042)

problem description given an integer n 0 n 10000 your task is to calculate n input one n in one line,process to the end of file.output for each n,outp...