这道看似简单的题,我第一遍的编译结果是:
问题出在数太大了,而我只把数据类型从int 改成了java……
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
while(sc.hasNext())
{
int n=sc.nextInt();
long result=1;
for(int i=1;i<=n;i++)
{
result=result*i;
}
System.out.println(result);
}
}
}
看了AC过的代码,发现要用到
BigDecimal 或 BigInteger
修改之后,顺利通过了
(如果我在比赛前做了这道题,比赛的时候或许就能做出那道特大数的题了
……ε=(´ο`*)))唉)
import java.math.BigInteger;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
while(sc.hasNext())
{
int n=sc.nextInt();
BigInteger result=BigInteger.valueOf(1); //第二种,参数可以是int、long
int i=1;
for(;i<=n;i++)
{
result=result.multiply(BigInteger.valueOf(i)); //乘法
}
System.out.println(result);
}
}
}