zoukankan      html  css  js  c++  java
  • Java Java Java

    学下java 的大数该怎么用><

    hdu 1023 Train Problem II

    求 卡特兰 数

    诶...不记得卡特兰数的我眼泪掉下来

    第一次用 java 大数 有点激动...><

     1 import java.io.*;
     2 import java.util.*;
     3 import java.math.BigInteger;
     4 
     5 public class test{
     6     public static void main(String args[]){
     7         BigInteger[] a = new BigInteger[101];
     8         a[0] = BigInteger.ZERO;
     9         a[1] = BigInteger.ONE;
    10         for(int i = 2;i <= 100;i++){
    11             BigInteger l = BigInteger.valueOf(4*i-2);
    12             BigInteger r = BigInteger.valueOf(i+1);
    13             a[i] = a[i-1].multiply(l);
    14             a[i] = a[i].divide(r);
    15         }
    16         Scanner in = new Scanner(System.in);
    17         int n;
    18         while(in.hasNext()){
    19             n = in.nextInt();
    20             System.out.println(a[n]);
    21         }
    22     }
    23     
    24 }
    View Code

    hdu 1063 Exponentiation

    求小数 a 的 b 次方

    stripTrailingZeros:去掉末尾0

    toPlainStrin:将科学计数法表示正常写法

    startWith:去掉首位0

    subtring(x) :截取从 第 x 位往后的字符串

     1 import java.io.*;
     2 import java.util.*;
     3 import java.math.BigDecimal;
     4 import java.math.BigInteger;
     5 
     6 public class test{
     7     public static void main(String args[]){
     8         Scanner in = new Scanner(System.in);
     9         while(in.hasNext()){
    10             BigDecimal a = in.nextBigDecimal();
    11             int b = in.nextInt();
    12             String ans = a.pow(b).stripTrailingZeros().toPlainString();
    13             if(ans.startsWith("0")){
    14                 ans = ans.substring(1);
    15             }
    16             System.out.println(ans);
    17         }
    18     }
    19     
    20 }
    View Code

    不过看C++的都是 0 ms 过,java要跑 500多ms

    hdu 1047 Integer Inquiry

    大数相加

     1 import java.io.*;
     2 import java.util.*;
     3 import java.math.BigDecimal;
     4 import java.math.BigInteger;
     5 
     6 public class Main{
     7     public static void main(String args[]){
     8         Scanner in = new Scanner(System.in);
     9         int n = in.nextInt();
    10         while(n-- > 0){
    11             BigInteger ans = BigInteger.ZERO;
    12             while(in.hasNext()){
    13                 BigInteger tmp = BigInteger.ZERO;
    14                 tmp = in.nextBigInteger();
    15                 BigInteger zero = BigInteger.valueOf(0);
    16                 if(!tmp.equals(zero)){
    17                     ans = ans.add(tmp);
    18                 }
    19                 else{
    20                     System.out.println(ans);
    21                     if(n != 0) System.out.println("");
    22                     break;
    23                 }
    24             }
    25        }
    26    }
    27 }
    View Code

    hdu 1316 How Many Fibs?

    统计大数区间里面的斐波那契数的个数

    用到 一个 compareto

     1 import java.io.*;
     2 import java.util.*;
     3 import java.math.BigDecimal;
     4 import java.math.BigInteger;
     5 
     6 public class Main{
     7     public static void main(String args[]){
     8         Scanner in = new Scanner(System.in);
     9         BigInteger f[] = new BigInteger[505];
    10         BigInteger zero = BigInteger.ZERO;
    11         f[1] = new BigInteger("1");
    12         f[2] = new BigInteger("2");
    13         for(int i = 3;i <= 500;i++) f[i] = f[i-1].add(f[i-2]);
    14         
    15         while(in.hasNext()){
    16             BigInteger l = in.nextBigInteger();
    17             BigInteger r = in.nextBigInteger();
    18             if(l.compareTo(zero) == 0 && r.compareTo(zero) == 0) break;
    19             int ans = 0;
    20             for(int i = 1;i <= 500;i++){
    21                 if(l.compareTo(f[i]) <= 0 && r.compareTo(f[i]) >= 0) ans++;
    22             }
    23             System.out.println(ans);
    24         }
    25    }
    26 }
    View Code

    hdu 1753 大明A+B

    大实数相加

     1 import java.io.*;
     2 import java.util.*;
     3 import java.math.BigDecimal;
     4 public class Main {
     5     public static void main(String[] args)
     6     {
     7         Scanner in=new Scanner(System.in);
     8         while (in.hasNext())
     9         {
    10             BigDecimal a=in.nextBigDecimal();
    11             BigDecimal b=in.nextBigDecimal();
    12             a=a.add(b);
    13             String s=a.stripTrailingZeros().toPlainString();
    14          //   if (s.startsWith("0."))
    15            //     s=s.substring(1);
    16             System.out.println(s);
    17         }
    18     }
    19 }
    View Code

    hdu 1261 字串数

    大数阶乘,除法

     1 import java.io.*;
     2 import java.util.*;
     3 import java.math.BigDecimal;
     4 import java.math.BigInteger;
     5 
     6 public class Main{
     7     public static void main(String args[]){
     8         Scanner in = new Scanner(System.in);
     9         int[] a = new int[55];
    10         BigInteger[] f = new BigInteger[300];
    11         f[0] = BigInteger.ONE;
    12         for(int i = 1;i < 300;i++) {
    13             BigInteger tmp = BigInteger.valueOf(i);
    14             f[i] = f[i-1].multiply(tmp);
    15         }
    16         int n;
    17         while(in.hasNext()){
    18             n = in.nextInt();
    19             if(n == 0) break;
    20             int x;
    21             BigInteger fz ,fm;
    22             fm = BigInteger.ONE;
    23             int fzz = 0,fmm = 0;
    24             for(int i = 1;i <= n;i++){
    25                 a[i] = in.nextInt();
    26                 fzz = fzz + a[i];
    27                 fm = fm.multiply(f[a[i]]);
    28             }
    29             fz = f[fzz];
    30             //System.out.println(fz);
    31             //System.out.println(fm);
    32             BigInteger ans = fz.divide(fm);
    33             System.out.println(ans);
    34         }
    35    }
    36 }
    View Code

    java 板

      1 //卡特兰数
      2 import java.io.*;
      3 import java.util.*;
      4 import java.math.BigInteger;
      5 
      6 public class test{
      7     public static void main(String args[]){
      8         BigInteger[] a = new BigInteger[101];
      9         a[0] = BigInteger.ZERO;
     10         a[1] = BigInteger.ONE;
     11         for(int i = 2;i <= 100;i++){
     12             BigInteger l = BigInteger.valueOf(4*i-2);
     13             BigInteger r = BigInteger.valueOf(i+1);
     14             a[i] = a[i-1].multiply(l);
     15             a[i] = a[i].divide(r);
     16         }
     17         Scanner in = new Scanner(System.in);
     18         int n;
     19         while(in.hasNext()){
     20             n = in.nextInt();
     21             System.out.println(a[n]);
     22         }
     23     }
     24     
     25 }
     26 
     27 /*求小数 a 的 b 次方
     28 stripTrailingZeros:去掉末尾0
     29 toPlainStrin:将科学计数法表示正常写法
     30 startWith:去掉首位0
     31 subtring(x) :截取从 第 x 位往后的字符串*/
     32 
     33 import java.io.*;
     34 import java.util.*;
     35 import java.math.BigDecimal;
     36 import java.math.BigInteger;
     37 
     38 public class test{
     39     public static void main(String args[]){
     40         Scanner in = new Scanner(System.in);
     41         while(in.hasNext()){
     42             BigDecimal a = in.nextBigDecimal();
     43             int b = in.nextInt();
     44             String ans = a.pow(b).stripTrailingZeros().toPlainString();
     45             if(ans.startsWith("0")){
     46                 ans = ans.substring(1);
     47             }
     48             System.out.println(ans);
     49         }
     50     }
     51     
     52 }
     53 
     54 //大数相加
     55 import java.io.*;
     56 import java.util.*;
     57 import java.math.BigDecimal;
     58 import java.math.BigInteger;
     59 
     60 public class Main{
     61     public static void main(String args[]){
     62         Scanner in = new Scanner(System.in);
     63         int n = in.nextInt();
     64         while(n-- > 0){
     65             BigInteger ans = BigInteger.ZERO;
     66             while(in.hasNext()){
     67                 BigInteger tmp = BigInteger.ZERO;
     68                 tmp = in.nextBigInteger();
     69                 BigInteger zero = BigInteger.valueOf(0);
     70                 if(!tmp.equals(zero)){
     71                     ans = ans.add(tmp);
     72                 }
     73                 else{
     74                     System.out.println(ans);
     75                     if(n != 0) System.out.println("");
     76                     break;
     77                 }
     78             }
     79        }
     80    }
     81 }
     82 
     83 //大实数相加
     84 import java.io.*;
     85 import java.util.*;
     86 import java.math.BigDecimal;
     87 public class Main {
     88     public static void main(String[] args)
     89     {
     90         Scanner in=new Scanner(System.in);
     91         while (in.hasNext())
     92         {
     93             BigDecimal a=in.nextBigDecimal();
     94             BigDecimal b=in.nextBigDecimal();
     95             a=a.add(b);
     96             String s=a.stripTrailingZeros().toPlainString();
     97          //   if (s.startsWith("0."))
     98            //     s=s.substring(1);
     99             System.out.println(s);
    100         }
    101     }
    102 }
    103 
    104 //大数阶乘,除法
    105 import java.io.*;
    106 import java.util.*;
    107 import java.math.BigDecimal;
    108 import java.math.BigInteger;
    109 
    110 public class Main{
    111     public static void main(String args[]){
    112         Scanner in = new Scanner(System.in);
    113         int[] a = new int[55];
    114         BigInteger[] f = new BigInteger[300];
    115         f[0] = BigInteger.ONE;
    116         for(int i = 1;i < 300;i++) {
    117             BigInteger tmp = BigInteger.valueOf(i);
    118             f[i] = f[i-1].multiply(tmp);
    119         }
    120         int n;
    121         while(in.hasNext()){
    122             n = in.nextInt();
    123             if(n == 0) break;
    124             int x;
    125             BigInteger fz ,fm;
    126             fm = BigInteger.ONE;
    127             int fzz = 0,fmm = 0;
    128             for(int i = 1;i <= n;i++){
    129                 a[i] = in.nextInt();
    130                 fzz = fzz + a[i];
    131                 fm = fm.multiply(f[a[i]]);
    132             }
    133             fz = f[fzz];
    134             //System.out.println(fz);
    135             //System.out.println(fm);
    136             BigInteger ans = fz.divide(fm);
    137             System.out.println(ans);
    138         }
    139    }
    140 }
    141 
    142 /*主类名字必须是Main
    143 读一个整数:    int n = cin.nextInt();
    144 读一个字符串:String s = cin.next();
    145 读一个浮点数:double t = cin.nextDouble();
    146 读一整行:      String s = cin.nextLine();
    147 判断是否有下一个输入可以用 cin.hasNext() 或 cin.hasNextInt() 或 cin.hasNextDouble() 等
    148 
    149 输出浮点数保留位数
    150 DecimalFormat f = new DecimalFormat("#.00#"); 
    151 DecimalFormat g = new DecimalFormat("0.000"); 
    152 double a = 123.45678, b = 0.12; 
    153 System.out.println(f.format(a)); 
    154 System.out.println(f.format(b)); 
    155 System.out.println(g.format(b)); 
    156 
    157 大数的运算
    158 BigInteger add(BigInteger other) 
    159 BigInteger subtract(BigInteger other) 
    160 BigInteger multiply(BigInteger other) 
    161 BigInteger divide(BigInteger other) 
    162 BigInteger mod(BigInteger other) 
    163 int compareTo(BigInteger other) 
    164 static BigInteger valueOf(long x) 
    165 
    166 输出直接用  System.out.println(a)*/
    167 
    168 StringBuffer 
    169 import java.io.*;
    170 import java.util.*;
    171 import java.text.*;
    172 import java.math.BigDecimal;
    173 import java.math.BigInteger;
    174 
    175 public class test{
    176     public static void main(String args[]){
    177         //赋值
    178         StringBuffer a = new StringBuffer();//初始化
    179         StringBuffer b = new StringBuffer("abc");
    180         String c = "abc";
    181         StringBuffer d = new StringBuffer(c);
    182         
    183         //在末尾加
    184         StringBuffer e = new StringBuffer("abc");
    185         e.append(true);
    186         
    187         //删除指定index 位置的字符
    188         StringBuffer f = new StringBuffer("abc");
    189         f.deleteCharAt(1);
    190         
    191         //删除指定区间的字符
    192         StringBuffer g = new StringBuffer("abcdefghjjkl");
    193         g.delete(1,4);
    194         
    195         //在index 位置插入字符串或者字符
    196         StringBuffer h = new StringBuffer("huhhhuhuhuhhh");
    197         String tmp = "njjjjjjj";
    198         char ch = 'c';
    199         h.insert(4,ch);
    200         h.insert(4,tmp);
    201         
    202         //字符串反转
    203         StringBuffer j = new StringBuffer("12345");
    204         j.reverse();
    205         
    206         //替换字符串
    207         StringBuffer i = new StringBuffer("122222");
    208         i.replace(0, 3, "ab");//左闭右开
    209         
    210         //子串
    211         StringBuffer kk = new StringBuffer("1234567");
    212         String kk1 = kk.substring(2);//返回下标开始以后的字符串
    213         String kk2 = kk.substring(2,4);//l 到 r-1的字符串
    214         System.out.println(kk1);
    215         System.out.println(kk2);
    216    }
    217 }
    View Code
  • 相关阅读:
    MyBatis学习(五)resultMap测试
    MyBatis学习(四)XML配置文件之SQL映射的XML文件
    Mybatis学习(三)XML配置文件之mybatis-config.xml
    每次回顾,总会有一点小收获!
    php数组去重、魔术方法、redis常用数据结构及应用场景
    MySQL使用可重复读作为默认隔离级别的原因
    后端程序猿标配之linux命令
    常用字符串函数
    nginx配置隐藏index.php
    MySQL的sql_mode解析与设置
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/5922196.html
Copyright © 2011-2022 走看看