題目大意
求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...