JAVA BigInteger的题目(学习BigInteger用法)

大数BigDecimal相关


 
import java.math.BigDecimal;

 
public class BD {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
 
		// 构造函数
		BigDecimal a = new BigDecimal(10);
		BigDecimal b = new BigDecimal(10.5);
		BigDecimal c = new BigDecimal(123456789101222L);
		BigDecimal d = new BigDecimal("-123456.31");
 
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		System.out.println(d);
		
		//四则运算
		System.out.println(a.add(b).add(c).add(d));
		System.out.println(a.subtract(b).subtract(a));
		System.out.println(a.multiply(b).multiply(c));
		System.out.println(c.divide(a).divide(new BigDecimal(20)));
		System.out.println(d.divide(a));
		System.out.println(d.doubleValue());
 
		System.out.println(a.compareTo(a));// 0
		System.out.println(a.compareTo(b));// -1
		System.out.println(b.compareTo(a));// 1
 
		BigDecimal aa = new BigDecimal(10.00);
		BigDecimal bb = new BigDecimal(10.000);
		BigDecimal cc = new BigDecimal(200);
 
		System.out.println(aa.equals(aa));// true?
		System.out.println(aa.equals(bb));// true?
		System.out.println(aa.equals(cc));//false
	}
 
}

大数BigInteger相关:



import java.math.BigInteger;
import java.util.Scanner;
 
public class BI {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//构造函数
		Scanner sc = new Scanner(System.in);
		BigInteger a = sc.nextBigInteger();
		BigInteger b = sc.nextBigInteger();
		System.out.println(a);
		System.out.println(b);
		
		//加法
		System.out.println(a.add(b));
		System.out.println(a.add(a));
		System.out.println(a.add(b).add(b));
		
		//减法
		System.out.println(a.subtract(a));
		System.out.println(a.subtract(b));
		System.out.println(b.subtract(a).subtract(a));
		
		//乘法
		System.out.println(a.multiply(a));
		System.out.println(a.multiply(b));
		System.out.println(a.multiply(b).multiply(b));
		
		//除法
		System.out.println(a.divide(a));
		System.out.println(a.divide(b));//10/2000=0
		System.out.println(b.divide(a));
		System.out.println(b.divide(a).divide(a));
		
		//取模
		BigInteger mod = BigInteger.valueOf(3);
		System.out.println(b.mod(mod));
	}
}

输入输出流


import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  
import java.util.Scanner;  
  
public class EnterTest { 
    
  public static void main(String[] args) { //主方法 
    CharTest();  //调用System.in方法 
    ReadTest();  //调用ReadTest方法 
    ScannerTest();//调用ScannerTest方法 
  } 
  /** 
   * System.in和System.out方法 
   * 缺点一: 该方法能获取从键盘输入的字符,但只能针对一个字符的获取 
   * 缺点二: 获取的只是char类型的。如果想获得int,float等类型的输入,比较麻烦。 
   */
  public static void CharTest(){  
    try{ 
      System.out.print("Enter a Char:"); 
      char i = (char)System.in.read(); 
      System.out.println("Yout Enter Char is:" + i); 
    } 
    catch(IOException e){ 
      e.printStackTrace(); 
    } 
      
  } 
  /** 
   * InputStreamReader和BufferedReader方法 
   * 优点: 可以获取键盘输入的字符串 
   * 缺点: 如何要获取的是int,float等类型的仍然需要转换 
   */
  public static void ReadTest(){ 
    System.out.println("ReadTest, Please Enter Data:"); 
    InputStreamReader is = new InputStreamReader(System.in); //new构造InputStreamReader对象 
    BufferedReader br = new BufferedReader(is); //拿构造的方法传到BufferedReader中 
    try{ //该方法中有个IOExcepiton需要捕获 
      String name = br.readLine(); 
      System.out.println("ReadTest Output:" + name); 
    } 
    catch(IOException e){ 
      e.printStackTrace(); 
    } 
      
  } 
  /** 
   * Scanner类中的方法 
   * 优点一: 可以获取键盘输入的字符串 
   * 优点二: 有现成的获取int,float等类型数据,非常强大,也非常方便; 
   */
  public static void ScannerTest(){ 
    Scanner sc = new Scanner(System.in); 
    System.out.println("ScannerTest, Please Enter Name:"); 
    String name = sc.nextLine();  //读取字符串型输入 
    System.out.println("ScannerTest, Please Enter Age:"); 
    int age = sc.nextInt();    //读取整型输入 
    System.out.println("ScannerTest, Please Enter Salary:"); 
    float salary = sc.nextFloat(); //读取float型输入
    sc.close();
    System.out.println("Your Information is as below:"); 
    System.out.println("Name:" + name +"\n" + "Age:"+age + "\n"+"Salary:"+salary); 
  } 
}

求 A+B 去掉小数点后无用的0.

HDU - 1753
ac code :

import java.util.*;
import java.math.*;
public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner (System.in);
		BigDecimal a,b;
		while(sc.hasNext()){
			a=sc.nextBigDecimal();
			b=sc.nextBigDecimal();
			a=a.add(b);
			System.out.println(a.stripTrailingZeros().toPlainString());
		}
		sc.close();
	}
}

对字符串的简单处理

HDU - 2100
26进制的加法输出结果任为26进制。

import java.util.*;
import java.math.*;
public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner (System.in);
		while(sc.hasNext()){
			BigInteger a = BigInteger.ZERO;
			BigInteger b = BigInteger.ZERO;
			BigInteger base = BigInteger.ONE;
			String aa = sc.next();
			String bb = sc.next();
			int alen = aa.length();
			int blen = bb.length();
			for(int i=alen-1;i>=0;i--){
				int num = aa.charAt(i)-'A';
				a=a.add(BigInteger.valueOf(num).multiply(base));
				base= base.multiply(BigInteger.valueOf(26));
			}
			base=BigInteger.ONE;
			for(int i=blen-1;i>=0;i--){
				int num = bb.charAt(i)-'A';
				b=b.add(BigInteger.valueOf(num).multiply(base));
				base=base.multiply(BigInteger.valueOf(26));
			}
			a=a.add(b);
			String ans="";
			while(!a.equals(BigInteger.ZERO)){
				//System.out.println(13);
				int tmp = a.mod(BigInteger.valueOf(26)).intValue();
				ans+=(char)(tmp+'A');
				a=a.divide(BigInteger.valueOf(26));
			}
			//System.out.println(ans.length());
			for(int i=ans.length()-1;i>=0;i--){
				System.out.print(ans.charAt(i));
			}
			System.out.println();
		}
		sc.close();
	}
}

2018焦作区域赛E题:
Resistors in Parallel
只要推出来结论暴力大数即可。

import java.util.*;
import java.math.*;
public class JiaozuoE {
	public static void main(String[] args){
		BigInteger a[] = new BigInteger [1000];
		int cnt = 0; 
		for(int i=2;i<=1000;i++){
			int flag = 0;
			for( int j=2;j<=i/2;j++){
				if(i%j==0){
					flag=1;
					break;
				}
			}
			if(flag==0){
				BigInteger tmp = BigInteger.valueOf(i);
				a[cnt++]=tmp; 
				//System.out.println(a[cnt-1]);
			}
		}
		Scanner sc = new Scanner (System.in);
		int t = sc.nextInt();	
		for(int i=1;i<=t;i++){
			BigInteger c = sc.nextBigInteger();
			BigInteger d = BigInteger.ONE;
			int cont = 0;
			while(d.compareTo(c)<=0){
				BigInteger tmp = a[cont];
				d=d.multiply(tmp);
				cont++;
			}
			BigInteger ans1 = BigInteger.ONE;
			BigInteger ans2 = BigInteger.ONE;
			for(int g=0;g<cont-1;g++){
				BigInteger tmp = a[g];
				ans1 = ans1.multiply(tmp);
				BigInteger bb = BigInteger.ONE;
				ans2 = ans2.multiply(tmp.add(bb));
			}
			BigInteger gc = ans1.gcd(ans2);
			System.out.println(ans1.divide(gc)+"/"+ans2.divide(gc));
		}
		sc.close();
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值