1076.N的阶乘
Posted bernieloveslife
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1076.N的阶乘相关的知识,希望对你有一定的参考价值。
- 题目描述:
-
输入一个正整数N,输出N的阶乘。
- 输入:
-
正整数N(0<=N<=1000)
- 输出:
-
输入可能包括多组数据,对于每一组输入数据,输出N的阶乘
- 样例输入:
-
4 5 15
- 样例输出:
-
24 120 1307674368000
#include<string.h> #include<stdio.h> using namespace std; struct biginteger{ int digit[1000]; int size; void init(){ //初始化 for(int i=0;i<1000;i++) digit[i]=0; size=0; } void set(int x){ //把一个x设置为高精度整数 init(); do{ digit[size++]=x%10000; x/=10000; }while(x!=0); } void output(){ //4位4位地输出 for(int i=size-1;i>=0;i--){ if(i!=size-1) printf("%04d",digit[i]); else printf("%d",digit[i]); } printf(" "); } biginteger operator * (int x) const { biginteger ret; ret.init(); int carry=0; for(int i=0;i<size;i++){ int temp=x*digit[i]+carry; carry=temp/10000; temp%=10000; ret.digit[ret.size++]=temp; } if(carry!=0){ ret.digit[ret.size++]=carry; } return ret; } }a; int main(){ int n; while(scanf("%d",&n)!=EOF){ a.init(); a.set(1); for(int i=1;i<=n;i++){ a=a*i; } a.output(); } return 0; }
以上是关于1076.N的阶乘的主要内容,如果未能解决你的问题,请参考以下文章