N!
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 84569 Accepted Submission(s): 24938
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
一个大数阶乘问题,用了java和c++两种语言来写,java就是普通的BigInteger,c++的话,思路就是用数组存每一位数字,相乘的时候就一位一位乘上去
C++:
#include<iostream>
using namespace std;
const int maxn=1e5;
int main(){
int n;
int num[maxn];
while(cin>>n){
num[0]=1;
int cnt=1;
for(int i=1;i<=n;i++){
int k=0;
for(int j=0;j<cnt;j++){
int tmp=num[j]*i+k;
num[j]=tmp%10;
k=tmp/10;
}
while(k){
num[cnt++]=k%10;
k/=10;
}
}
for(int i=maxn-1;i>=0;i--){
if(num[i]) break;
for(int j=cnt-1;j>=0;j--){
cout<<num[j];
}
}
cout<<endl;
}
}
java:
import java.math.BigInteger;
import java.util.Scanner;
public class Main{
public static void main(String []args){
Scanner cin=new Scanner(System.in);
while(cin.hasNext()){
int n;
n=cin.nextInt();
BigInteger ans=BigInteger.ONE;
for(int i=1;i<=n;i++){
ans=ans.multiply(BigInteger.valueOf(i));
}
System.out.println(ans);
}
}
}