HDU 1042 N!
生活随笔
收集整理的這篇文章主要介紹了
HDU 1042 N!
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
典型的大數問題、
分析來自:http://www.cnblogs.com/Su-Blog/archive/2012/08/27/2659172.html
高精度問題:大整數乘法的應用其核心思想就是把計算結果每一位上的數字保存到一個數組成員中,例如:
把124保存至數組中,保存結果應該是result[0] =4;result[1] =2;result[2] =1
把整個數組看成一個數字,這個數字和一個數相乘的時候,需要每一位都和這個乘數進行相乘運算還需要把前一位的進位加上。
寫法如下:int 結果 = result[x] * 乘數 + 進位;
每一位的計算結果有了,把這個結果的個位數拿出來放到這個數組元素上:result[x] = 結果%10;
接下來的工作就是計算出進位:進位 = 結果 / 10;
這樣一位一位的把整個數組計算一遍,最后可能還有進位,用同樣的方法,把進位的數值拆成單個數字,放到相應的數組元素中。最后從后往前輸出結果。
?
1 #include<iostream> 2 using namespace std; 3 const int qq=1e5; 4 int num[qq]; 5 int main() 6 { 7 int n; 8 while(cin >> n){ 9 int temp,count; 10 num[0]=1; 11 count=1; 12 for(int k,j,i=1;i<=n;++i) 13 { 14 k=0; 15 for(j=0;j<count;++j) 16 { 17 temp=num[j]*i+k; 18 num[j]=temp%10; 19 k=temp/10; 20 } 21 while(k) 22 { 23 num[count++]=k%10; 24 k/=10; 25 } 26 } 27 for(int i=count-1;i>=0;--i) 28 cout << num[i]; 29 cout << endl; 30 } 31 }?
轉載于:https://www.cnblogs.com/sasuke-/p/5159290.html
總結
以上是生活随笔為你收集整理的HDU 1042 N!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R函数-字符串操作
- 下一篇: iOS开发时间戳与时间,时区的转换,汉字