题目链接---E-进击吧!阶乘
时间限制:C/C++ 3秒,其他语言6秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
给定一个整数N(0≤N≤10000),求取N的阶乘
输入描述:
多个测试数据,每个测试数据输入一个数N
输出描述:
每组用一行输出N的阶乘
示例1模板题:输入
1 2 3输出
1 2 6
c++实现:
#include <iostream> #include <cstring> using namespace std; int main() { int n,i,j,k,l,m; int a[50000]; memset(a,0,sizeof(a)); a[0]=1; m=0; cin>>n; for(i=2;i<=n;i++) { for(l=0,j=0;j<=m;j++) { k=a[j]; a[j]=(k*i+l)%10; l=(k*i+l)/10; } while(l) //这里,避免了对数字高位为0的运算!!! { a[++m]=l%10; l/=10; } } while(m>=0) cout<<a[m--]; cout<<endl; return 0; }
java实现:
import java.math.BigInteger; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner inputScanner=new Scanner(System.in); while(inputScanner.hasNext()) { int n=inputScanner.nextInt(); BigInteger m; m=BigInteger.valueOf(1);//将m定义成大数的1 for(int i=1;i<=n;i++) { m=m.multiply(BigInteger.valueOf(i));//大数乘法 } System.out.println(m); } } }
python实现:
while True: try: n = int(input()) ans = 1 for i in range(1,n+1): ans = ans * i print(ans) except: break