Java AC代码:
用Java A这道题只花了1000MS !!!(题目限定在5000MS内)
import java.util.Scanner;
import java.math.BigInteger;
public class Hdoj1042 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int n;
BigInteger m;
while(scanner.hasNextBigInteger()){
n=scanner.nextInt();
m=BigInteger.ONE;
for(int i=2;i<=n;i++)
m=m.multiply(BigInteger.valueOf(i));
System.out.println(m);
}
}
}
C++代码:
这个C++代码是改编自刘汝佳老师的白皮书上的一个阶乘的算法。确实很佩服刘老师,不过用C++写的花了3765MS 。
//hdoj1042.cpp
#include<iostream>
#include<string>
using namespace std;
const int MAXN=36000;//求10000!数组要36000才行
int a[MAXN];
int main(){
int n,i,j;
while(scanf("%d",&n)!=EOF){
memset(a,0,sizeof(a));
a[0]=1;
for(i=2;i<=n;i++){
int c=0;
for(j=0;j<MAXN;j++){//这一段技巧性很强,要自己动手测试几个数据就能看懂了
int s=a[j]*i+c;
a[j]=s%10;
c=s/10;
}
}
for(j=MAXN-1;j>=0;j--)
if(a[j])
break;
for(i=j;i>=0;i--)
printf("%d",a[i]);
printf("\n");
}
return 0;
}
分享到:
相关推荐
some code of HDOJ of mine
HDOJ题目分类HDOJ题目分类HDOJ题目分类
java.util 中 BigInteger 的使用; java.math 中 BigDecimal 的使用;&& so on. . .
ACM ICPC HDOJ1002
ACM ICPC HDOJ1001
hdoj1001标程
hdoj上的资源,代码有注释,很不错的哦
hdoj1004,解题代码,答案代码,欢迎下载
ACM ICPC HDOJ1003
ACM ICPC HDOJ1008
杭州电子科技大学hdoj1002,大整数相加问题
杭州电子科大HDOJ
c语言 最短路 是hdoj上的一个最短路问题,写的很牛
ACM ICPC HDOJ1000
hdoj解题代码,题目为1000-1050
一些HDOJ上的DP题目的小总结,但愿能帮到那些想专攻DP的人吧
codj,hdoj的源码(50-60题)
hdoj 2013 多校训练3标程+解题报告
HDOJ 源代码 包含几百道HDOJ题目源码
hdoj1005 Number Sequence, 杭州电子科技大学oj题目代码