【HDU 1042】N!

题目链接

题目描述

Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N!

就是算n!。

解题思路

没啥说的,高精度吧,注意一个数组足矣,不然会t。

代码

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 int ans[50005];
 7 int n;
 8 int wei=1;
 9 inline void calc(int* a,int num){
10     for(register int i=0;i<=wei;i++){
11         a[i]*=num;
12     }
13     for(register int i=0;i<=50000;i++){
14         wei=i+1;
15         //if(!a[i])return;
16         if(a[i]>=10){
17             a[i+1]+=a[i]/10;
18             a[i]%=10;
19         }
20     }
21 }
22 int main(){
23     while(~scanf("%d",&n)){
24         wei=0;
25         memset(ans,0,sizeof(ans));
26         ans[0]=1;
27         for(register int i=2;i<=n;i++){
28             calc(ans,i);
29         }
30         for(register int i=wei;i>=0;i--){
31             if(ans[i]){
32                 for(;i>=0;i--){
33                     printf("%d",ans[i]);
34                 }
35             }
36         }
37         putchar('\n');
38     }
39 }

猜你喜欢

转载自www.cnblogs.com/Fang-Hao/p/9152089.html