HDU1042(大数运算)

来源:互联网 发布:zookeeper 集群 linux 编辑:程序博客网 时间:2024/05/23 11:29

N!

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 41734    Accepted Submission(s): 11606


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
123
 


 

Sample Output
126

 

//开辟数组每位存储一个数位,一次用当前数和每一位相乘,注意进位!#include<iostream>using namespace std;#include<stdio.h>const int SUB=40000;int main(){    int n,i,j;    int a[SUB];    int digit;    int carry;    int temp;    while(scanf("%d",&n)!=EOF)    {        a[0]=1;        digit=1;        if(n==0||n==1)        {            printf("%d\n",a[0]);            continue;        }        for(i=2;i<=n;i++)        {            for(j=0,carry=0;j<digit;j++)            {                temp=a[j]*i+carry;                a[j]=temp%10;                carry=temp/10;            }            if(carry)            {                while(carry)                {                    a[j++]=carry%10;                    carry/=10;                    digit=j;                }            }        }        for(i=digit-1;i>=0;i--)        {            printf("%d",a[i]);        }        printf("\n");    }    return 0;} 


 

原创粉丝点击