1057 N的阶乘
1057?N的階乘? 基準時間限制:1?秒 空間限制:131072?KB 分值:?0?難度:基礎題 輸入N求N的階乘的準確值。 Input 輸入N(1?<=?N?<=?10000) Output 輸出N的階乘 Input示例 5 Output示例 120
本來用的是大數乘法,結果最后超時啦,
然后用數組存一下,類似于10000進制,
將所有的數保留,當進位的時候才會加一。
1 #include <bits/stdc++.h> 2 using namespace std; 3 #define N 1e4 4 int a[10010]; 5 void fancy(int x){ 6 int res = 0; 7 a[0]=1; 8 for(int i=1;i<=x;i++){ 9 int flag = 0; 10 for(int j=0;j<=res;j++){ 11 a[j] = a[j]*i+flag; 12 flag = a[j]/10000; 13 a[j]%=10000; 14 } 15 if(flag>0){ 16 a[++res] = flag; 17 } 18 } 19 printf("%d",a[res]); 20 for(int i=res-1;i>=0;i--){ 21 printf("%04d",a[i]); 22 } 23 printf("\n"); 24 } 25 int main(){ 26 int n; 27 cin>>n; 28 fancy(n); 29 return 0; 30 }
本來用的是大數乘法,結果最后超時啦,
然后用數組存一下,類似于10000進制,
將所有的數保留,當進位的時候才會加一。
1 #include <bits/stdc++.h> 2 using namespace std; 3 #define N 1e4 4 int a[10010]; 5 void fancy(int x){ 6 int res = 0; 7 a[0]=1; 8 for(int i=1;i<=x;i++){ 9 int flag = 0; 10 for(int j=0;j<=res;j++){ 11 a[j] = a[j]*i+flag; 12 flag = a[j]/10000; 13 a[j]%=10000; 14 } 15 if(flag>0){ 16 a[++res] = flag; 17 } 18 } 19 printf("%d",a[res]); 20 for(int i=res-1;i>=0;i--){ 21 printf("%04d",a[i]); 22 } 23 printf("\n"); 24 } 25 int main(){ 26 int n; 27 cin>>n; 28 fancy(n); 29 return 0; 30 }
?
?
轉載于:https://www.cnblogs.com/zllwxm123/p/9007254.html
總結
- 上一篇: ASP.NET MVC5 Entity
- 下一篇: 网络爬虫requests-bs4-re-