HDU 1042N!
Posted fang-hao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 1042N!相关的知识,希望对你有一定的参考价值。
题目描述
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 }
以上是关于HDU 1042N!的主要内容,如果未能解决你的问题,请参考以下文章
HDU4057 Rescue the Rabbit(AC自动机+状压DP)
HDU3247 Resource Archiver(AC自动机+BFS+DP)