加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

杭电 1042 N! 大数相乘

发布时间:2020-12-14 03:31:34 所属栏目:大数据 来源:网络整理
导读: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
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 代码如下:
#include<iostream>
#include<cstring>
#include<iomanip>
using namespace std ; 
const int MAX = 9000 ;
const int UP = 10000 ; 
int main(){
	int a[MAX] ; 
	int n;
	while(cin>>n){
		for(int i=0 ; i<MAX ; ++i) a[i] = 0;
		
		
		a[0] = 1; 
		int t = 1;
		for(int i=1 ; i<=n ; ++i){
			int so  = 0 ;
			for(int j=0 ; j<t ; ++j){
				a[j] = i*a[j]+so ;
				so   = a[j]/UP ;
				a[j] = a[j]%UP ;
			}
			while(so){
				a[t++] += so%UP;
				so /= UP;
			}
		}
		
		cout<<a[--t];
		while(t > 0 )    cout<<setw(4)<<setfill('0')<<a[--t];
		cout<<endl;
	}
	
	return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读