杭电Hd 1018 大数题
来源:互联网 发布:淘宝运单模板怎么设置 编辑:程序博客网 时间:2024/06/14 22:17
首先做对以后当然这是一道简单题,但是计算的方法可能得难为你一会。我就是,毕竟没做几道题,没经验,什么超时啊等等把握不准,我会慢慢练好的。下面是我第一次写的超时的代码:
import java.math.BigInteger;
import java.util.Scanner;
//大数题
public class Hd1018 {
public static void main(String[] args){
Scanner sc=new Scanner (System.in);
int n=Integer.valueOf(sc.next());
for(int i=0;i<n;i++){ //这里的n最大能10000 000
String num=sc.next();
jiecheng(num);
}
}
//求阶乘方法
static void jiecheng(String m){
BigInteger sum=new BigInteger("1");
for(int i=2;i<=Integer.valueOf(m);i++){
sum=sum.multiply(new BigInteger(""+i));
}
int n=sum.toString().length();//这纠结了一会,怎么数位数呢?
//看了看大数类的方法,可以把它先转化成字符串,那样就可以再调用的字符串的方法求其长度了
System.out.println(n);
}
}
上面的代码超时了,然后我实在想不出来了,就去网上看了看,网络真好,总能个我们收获。看到几种方法,写了一种。看来学编程,数学底子真是要命
import java.util.Scanner;
//大数题
public class Hd1018 {
public static void main(String[] args){
Scanner sc=new Scanner (System.in);
int n=sc.nextInt();
double sum=0;
for(int i=0;i<n;i++){ //这里的n最大能10000 000
int num=sc.nextInt();
for(int j=1;j<=num;j++){
sum+=Math.log10((double)j);
}
System.out.println((int)(sum+1));
sum=0;
}
}
}
- 杭电Hd 1018 大数题
- 杭电Hd 1042
- 杭电Hd 2057
- 杭电Hd 1108
- 杭电Hd 2187
- 杭电Hd 1455
- 杭电Hd 2111
- 杭电Hd 2005
- 杭电1316 hd
- 杭电Hd 1020 Encoding
- 杭电Hd 2051 Bitset
- 杭电Hd 1425 sort
- HD杭电1418 抱歉
- HD ACM C++ 1018 大数位数计算
- 杭电1018 (大数阶乘位数)
- 杭电1018-Big Number(大数)
- 杭电1212题 大数求余
- 杭电acm-1002题-大数加法
- uc/os--OSTaskStkInit
- OpenGL中的glLoadIdentity、glTranslatef、glRotatef原理
- 多核计算与程序设计 - 09 基本算法和数据结构 之四 AVL搜索树
- uc/os--OSRdyTbl
- JS基础之object所具有的属性和方法
- 杭电Hd 1018 大数题
- Benefits of Index-Organized Tables【每日一译】--20130101
- 数据结构_堆栈
- uc/os--OSTCBInit
- 程序与生活
- GLSL中的gl_Color在顶点着色器和片段着色器中的不同意义
- 获取当前时间
- Linux Find 命令使用详解
- VC2010中添加已有项目到解决方案(工程)