1379 - n的阶乘
时间限制 : 1 秒
内存限制 : 32 MB
输入一个正整数n,输出n的阶乘。
题目输入
正整数n(0<=n<=20)
题目输出
输入可能包括多组数据,对于每一组输入数据,输出n的阶乘
输入/输出样例
输入格式
4 5 15
输出格式
24 120 1307674368000
C语言解答
#include<stdio.h> int main() { int n,i; double sum; while(scanf("%d",&n)!=EOF) { sum=1.0; for(i=1;i<=n;i++) { sum=sum*i; } printf("%.0lf\n",sum); } return 0; }
C++解答
#include <stdio.h> #include <string.h> typedef struct{ int nums[3300]; int length; }BigInteger; BigInteger Create(int num){ BigInteger ans; ans.length = 0; while(num){ ans.nums[ans.length++] = num%10; num /= 10; } return ans; } BigInteger Multiply(BigInteger num1, BigInteger num2){ BigInteger ans; memset(ans.nums, 0, sizeof(ans.nums)); ans.length = 0; for(int i=0; i<num1.length; i++){ for(int j=0; j<num2.length; j++){ ans.nums[i+j] += num1.nums[i]*num2.nums[j]; } } while(ans.length<num1.length+num2.length-1 || ans.nums[ans.length]){ ans.nums[ans.length+1] += ans.nums[ans.length]/10; ans.nums[ans.length] %= 10; ans.length++; } return ans; } void Print(BigInteger num){ if(num.length == 0){ printf("0"); } int i = num.length; while(i--){ printf("%d", num.nums[i]); } } BigInteger ans[1100]; int main(){ int n; ans[0] = Create(1); ans[1] = Create(1); for(int i=2; i<1100; i++){ ans[i] = Multiply(ans[i-1], Create(i)); } while(scanf("%d", &n) != EOF){ Print(ans[n]); putchar('\n'); } return 0; }
Java解答
import java.util.*; import java.math.BigInteger; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); while(cin.hasNext()){ int n = cin.nextInt(); BigInteger ans = BigInteger.ONE; for(int i=1;i<=n;i++){ ans = ans.multiply(BigInteger.valueOf(i)); } System.out.println(ans); } } }
Python解答
import sys,math for line in sys.stdin: a = int(line.split()[0]) print math.factorial(a)