首页 > 其他 > 详细

hdu 1042 N!

时间:2014-04-08 14:20:21      阅读:525      评论:0      收藏:0      [点我收藏+]
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, output N! in one line.
 

 

Sample Input
1
2
3
 
Sample Output
1
2
6

 高精度运算

bubuko.com,布布扣
#include<stdio.h>
#include<string.h>
int m=10000;
struct bignum{
    int s[20001];//存放结果
    int l;//数组的长度
}a;
bignum operator*(bignum a,int b)//a=a*b
{
    int i;
    for(i=0;i<a.l;i++) a.s[i]*=b;//a的各位数乘b
    for(i=0;i<a.l;i++)
    {
        a.s[i+1]+=a.s[i]/m;
        a.s[i]%=m;
    }
    while(a.s[a.l]!=0)//处理a的最高位
    {
        a.s[a.l+1]+=a.s[a.l]/m;
        a.s[a.l]=a.s[a.l]%m;
        a.l++;
    }
    while(a.s[a.l-1]==0) a.l--;
    return a;
}
void print(bignum a)
{
    printf("%d",a.s[a.l-1]);
    for(int i=a.l-2;i>=0;i--)
        printf("%04d",a.s[i]);
    printf("\n");
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int i;
        memset(a.s,0,sizeof(a.s));
        a.s[0]=1;a.l=1;
        for(i=1;i<=n;i++)
        {
            a=a*i;
        }
        print(a);
    }
    return 0;
}
        
bubuko.com,布布扣

 

hdu 1042 N!,布布扣,bubuko.com

hdu 1042 N!

原文:http://www.cnblogs.com/duan-to-success/p/3651650.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!