Java大数练习第二弹

hdu1250 水题 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1250

import java.util.*;
import java.math.BigInteger;
public class Main{
    public static void main(String[] args){
        int a;
        Scanner in=new Scanner(System.in);
        while(in.hasNext()){
            a=in.nextInt();
            BigInteger[] num=new BigInteger[10000];
            num[1]=BigInteger.ONE;
            num[2]=BigInteger.ONE;
            num[3]=BigInteger.ONE;
            num[4]=BigInteger.ONE;
            for(int i=5;i<=a;i++){

                num[i]=(num[i-1]).add(num[i-2]).add(num[i-3]).add(num[i-4]);

            }
            System.out.println(num[a]);
        }
    }
}

hdu1297 递推求解  题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1297

import java.util.*;
import java.math.BigInteger;
public class Main{
    public static void main(String[] args){
        Scanner in= new Scanner(System.in);
        int a;
        BigInteger[] b= new BigInteger[1010];
        b[1]=BigInteger.ONE;
        b[2]=BigInteger.valueOf(2);
        b[3]=BigInteger.valueOf(4);
        b[4]=BigInteger.valueOf(7);
        while(in.hasNext()){
            a=in.nextInt();
            if(a<5)
                System.out.println(b[a]);
            else{
                for(int i=5;i<=a;i++){
                    b[i]=b[i-1].add(b[i-2]).add(b[i-4]);
                }
                System.out.println(b[a]);
            }
        }

    }
}

hdu1715 水题 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1715

import java.util.*;
import java.math.BigInteger;
public class Main{
    public static void main(String[] args){
        Scanner in= new Scanner(System.in);
        BigInteger[] b= new BigInteger[1010];
        b[1]=BigInteger.valueOf(1);
        b[2]=BigInteger.valueOf(1);
        for(int i=3;i<=1000;i++){
            b[i]=b[i-1].add(b[i-2]);
        }
        int n=in.nextInt();
        while(n-->0){
            int text=in.nextInt();
            System.out.println(b[text]);
        }
    }
}

hdu1753 高精度小数求和  题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1753

import java.util.*;
import java.math.BigDecimal;
public class Main{
    public static void main(String[] args){
        Scanner in= new Scanner(System.in);
        BigDecimal a,b;
        while(in.hasNext()){
            a=in.nextBigDecimal();
            b=in.nextBigDecimal();
            BigDecimal c=a.add(b);
             String res = c.stripTrailingZeros().toPlainString(); //stripTrailingZeros()去除后面多余的零
                                                                  //toPlainString(),取消科学计数法表示
               System.out.println(res);
        }
    }
}

hdu  1865 找规律 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1865

import java.util.*;
import java.math.*;
public class Main{
    public static void main(String[] args){
        Scanner in= new Scanner(System.in);
        int a;
        String test;
        a=in.nextInt();
        BigInteger[] num= new BigInteger[210];
        num[1]=BigInteger.ONE;
        num[2]=BigInteger.valueOf(2);
        num[3]=BigInteger.valueOf(3);
        while(a-->0){
            test=in.next();
            int n=test.length();
            if(n<4)
                System.out.println(num[n]);
            else
            {
                for(int i=4;i<=n;i++){
                    num[i]=num[i-1].add(num[i-2]);
                }
                System.out.println(num[n]);
            }

        }
    }
}

hdu 2100  进制转换,,方法可能比较麻烦 不过也熟练了许多java的用法。

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2100

import java.util.*;
import java.math.*;
public class Main{
    public static BigInteger mpow(int b){ //自己写的求幂函数
        BigInteger ans=BigInteger.ONE;
        for(int i=0;i<b;i++){
            ans=ans.multiply(BigInteger.valueOf(26));
        }
        return ans;
    }
    public static String change(BigInteger num){
        char[] line=new char[250];
        int cnt=0;
        while(num.compareTo(BigInteger.ZERO)!=0){
            BigInteger a=num.mod(BigInteger.valueOf(26));
            num=num.divide(BigInteger.valueOf(26));
            line[cnt++]=(char)(a.intValue()+'A'); //将 BigInteger转换成int
        }
        return String.valueOf(line); //将字符数组转换成 String
    }
    public static void main(String[] args){
        Scanner in= new Scanner(System.in);
        while(in.hasNext()){
            String a,b;
            a=in.next();
            b=in.next();
            BigInteger an=BigInteger.ZERO;
            //System.out.println(a);
            //System.out.println((int)a.charAt(1));
            for(int i=0;i<a.length();i++){
                an=an.add(BigInteger.valueOf(a.charAt(i)-'A').multiply(mpow(a.length()-i-1)));//String 单个字符显示 用 str.charAt(i);
            }
            BigInteger bn=BigInteger.ZERO;
            for(int i=0;i<b.length();i++){
                bn=bn.add(BigInteger.valueOf(b.charAt(i)-'A').multiply(mpow(b.length()-i-1)));
            }
            BigInteger c=an.add(bn);
            String fin=change(c);
            for(int i=fin.length()-1;i>=0;i--){
                if(fin.charAt(i)!='\0')
                System.out.print(fin.charAt(i));
            }
            System.out.println();

        }
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-01 22:53:27

Java大数练习第二弹的相关文章

Java大数练习第一弹

今天要多刷java大数,争取以后轻松水掉大数题~ hdu 1002 大数相加 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002 [代码] import java.util.*; import java.math.BigInteger; public class Main{ public static void main(String[] args){ Scanner in=new Scanner(System.in); int n=in.next

10道java经典算法题,每一题都能提升你的java水平!第二弹!

10道java经典算法! 持续更新java小知识,跪求关注,祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早生贵子,从不掉发! [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去   掉不满足条件的排列. public class Wanshu { public static void main(String[] args) { int i=0; int j=

Java高精度学习第二弹——求N!

继续学习Java高精度,今天写的是求N!. 首先附上源代码: import java.util.Scanner; import java.math.BigInteger; public class Main { public static void main(String []args) { Scanner cin = new Scanner(System.in); BigInteger a,n,i; while(cin.hasNext()) { a = cin.nextBigInteger()

《Java程序设计》第二周学习总结

20175314 <Java程序设计>第二周学习总结 教材学习内容总结 我在APPstore上发现了一个可以支持我们在IOS系统上学习实践Java程序的开发环境,只需要购买专业版就可以使用,能够让我们随时随地地编辑.编译和运行代码 第二章:基本数据类型与数组 数据类型转换时,格式为(类型名)要转换的值,级别低的变量赋给级别高的变量时,系统会自动完成类型转换.但是当级别高的变量要赋给级别低的变量,就必须要用到类型转换运算. 输入数据:使用Scanner创建一个对象,比如Scanner reade

JVM第二弹

JVM第二弹 GC分代收集算法VS分区收集算法 分代收集算法 当前主流的VM垃圾收集都采用"分代收集"算法,这种算法会根据对象存活周期的不同将内存划分为几块,如JVM中的新生代.老年代.永久代,这样就可以根据个年代特点分别采用最适当的GC算法. 新生代·复制算法 每次垃圾收集都能发现大批对象已死,只有少量存活.因此选用复制算法,只需要付出少量存活对象的复制成本就可以完成收集. 老年代·标记整理算法 因为对象存活率高.没有额外空间对它进行分配担保,就必须采用"标记-清理&quo

nyoj 73 比大小 【java大数】

java大数. 代码: import java.util.Scanner; import java.math.*; public class Main{ public static void main(String[] args){ Scanner cin = new Scanner(System.in); BigInteger a, b; BigInteger t = BigInteger.valueOf(0); a = cin.nextBigInteger(); b = cin.nextBi

《我与希乐仑》第二弹

致徐敏: 如果你觉得我的这篇报道侵害了你和贵公司的权益,你可以上法院告我,但我说的都是事实,不怕你告,有事找我律师,谢谢! 我是希乐仑科技发展(上海)有限公司前员工,曾经为希乐仑立下汗马功劳.这公司从2014年2月份开始搞我,我去年的绩效是3.8/5.0,完全没有绩效问题.他们倒好,自从我查完我们公司某商业间谍之后,就给我穿小鞋,说我这个不好,那个拖延,这不是扯淡吗?公司在3月5日非法把我裁掉,而且直到现在还未支付我2月份工资,行吧,那我就不再沉默了,当我吃素的是吧!我现在把这件事情公之于众,望

20155336 2016-2017-2《JAVA程序设计》第二周学习总结

20155336 2016-2017-2 <JAVA 程序设计>第二周学习总结 教材学习内容 1: GIT版本检测 2: JAVA中基本类型 整数 字节 浮点数 字符 布尔(▲) 通过API可以得知各个类型可存储的数值范围 public class Range {public static void main(String[] args){ //byte.short.int.long的范围 System.out.printf("%d~%d%n", Byte.MIN_VALU

UVA10303 - How Many Trees?(java大数+catalan数)

UVA10303 - How Many Trees?(java大数+catalan数) 题目链接 题目大意:给你1-N N个数,然后要求由这些数构成二叉搜索树,问有多少种这样的二叉搜索树. 解题思路:把前5项理出来,正好是1 2 5 14 42..就猜想是catalan数,结果也是对了.公式f(i + 1) = (4?i - 6)/ i; (i >= 2).结果很大,要用高精度. 代码: import java.util.*; import java.math.*; import java.io