九度oj 1076

来源:互联网 发布:淘宝买家秀模特兼职 编辑:程序博客网 时间:2024/05/18 06:18
题目描述:

 输入一个正整数N,输出N的阶乘。

输入:

正整数N(0<=N<=1000)

输出:

 输入可能包括多组数据,对于每一组输入数据,输出N的阶乘

样例输入:
4515
样例输出:
241201307674368000
来源:

2006年清华大学计算机研究生机试真题

#include<stdio.h>#include<string.h>#include<iostream>using namespace std;struct big{       int digit[1000];       int size;       void init()       {            for(int i=0;i<1000;i++) digit[i]=0;            size=0;                    }                    void set(int x)                    {                         init();                         do{                                digit[size++]=x%10000;                                x/=10000;                                }while(x!=0);                                }                                void output()                                {                                     for(int i=size-1;i>=0;i--)                                     {                                             if(i!=size-1)                                             {                                                          printf("%04d",digit[i]);                                                          }                                                          else                                                          {                                                              printf("%d",digit[i]);                                                              }                                                              }                                                              printf("\n");                                                                                                                            }                                                              big operator *(int x)const{                                                                  big ret;                                                                  ret.init();                                                                  int carry=0;                                                                  for(int i=0;i<size;i++)                                                                  {                                                                          int tmp=x*digit[i]+carry;                                                                          carry=tmp/10000;                                                                          tmp%=10000;                                                                          ret.digit[ret.size++]=tmp;                                                                          }                                                                          if(carry!=0)                                                                          {                                                                                      ret.digit[ret.size++]=carry;                                                                                      }                                                                                      return ret;                                                                                      }                                                                                      }a;                                                                                      int main()                                                                                      {                                                                                          int n;                                                                                          while(cin>>n)                                                                                          {                                                                                                                                                                                                              a.init();                                                                                                       a.set(1);                                                                                                       for(int i=1;i<=n;i++)                                                                                                       {                                                                                                               a=a*i;                                                                                                               }                                                                                                               a.output();                                                                                                               }                                                                                                               }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 


0 0