Java大数的使用

10 篇文章 0 订阅

参考飘过的小牛的博客,练习NYOJ的Java大数题目,主要是为了熟悉一下Java语言。(都快算抄袭了,,,)

Java中的运算符和常用方法的使用——链接

NYOJ 28 大数阶乘

import java.math.BigInteger;
import java.util.Scanner;
public class Main{
	public static void main(String []args){
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		BigInteger ans = BigInteger.ONE;
		for(int i = 1;i <= n;i++)
			ans = ans.multiply(BigInteger.valueOf(i));
		System.out.println(ans);
	}
}


NYOJ 45 棋盘覆盖

  这个棋盘是正方形的,去掉一个格子以后,恰好可以用图2全部覆盖(这个的原因未知),所以棋盘的格子总数 4^k - 1  除以3  就是结果了。

  即(4^k - 1) / 3

import java.math.BigInteger;
import java.util.Scanner;
public class Main{
	public static void main(String []args){
		Scanner in = new Scanner(System.in);
		int t = in.nextInt(),k;
		while(t-- > 0)
		{
			k = in.nextInt();
			BigInteger ans = new BigInteger("4");
			for(int i = 1;i <= k-1;i++)
				ans = ans.multiply(BigInteger.valueOf(4));
			System.out.println(ans.subtract(BigInteger.valueOf(1)).divide(BigInteger.valueOf(3)));
		}
	}
}

NYOJ 73 比大小

import java.math.BigInteger;
import java.util.Scanner;
public class Main{
	public static void main(String []args){
		Scanner in = new Scanner(System.in);
		while(in.hasNext())
		{
			BigInteger a = in.nextBigInteger();
			BigInteger b = in.nextBigInteger();
			if(a.equals(BigInteger.ZERO) && b.equals(BigInteger.ZERO))  
                break;
			
			int flag = a.compareTo(b);
			if(flag == -1)
				System.out.println("a<b");
			else if(flag == 1)
				System.out.println("a>b");
			else
				System.out.println("a==b");
		}
	}
}

NYOJ 103 A+B Problem II

import java.math.BigInteger;
import java.util.Scanner;
public class Main{
	public static void main(String []args){
		Scanner in = new Scanner(System.in);
		int t = in.nextInt();
		for(int ca = 1;ca <= t;ca++)
		{
			BigInteger a = in.nextBigInteger();
			BigInteger b = in.nextBigInteger();
			BigInteger sum = a.add(b);
			System.out.println("Case " + ca + ":");
			System.out.println(a+ " + " +b + " = " +sum);
		}
	}
}

NYOJ 114 某种序列

import java.math.BigInteger;
import java.util.Scanner;
public class Main{
	public static void main(String []args){
		Scanner in = new Scanner(System.in);
		BigInteger [] a = new BigInteger[105];
		while(in.hasNext())//多组数据
		{
			for(int i = 0;i < 3;i++)
				a[i] = in.nextBigInteger();
			for(int i = 3;i <= 99;i++)
				a[i] = a[i-1].add(a[i-2]).add(a[i-3]);
			System.out.println(a[99]);
		}
	}
}

NYOJ 155 求高精度幂

import java.math.BigDecimal;
import java.util.Scanner;
public class Main{
	public static void main(String []args){
		Scanner in = new Scanner(System.in);
		while(in.hasNext())
		{
			BigDecimal R = in.nextBigDecimal();
			int n = in.nextInt();
			String str = R.pow(n).stripTrailingZeros().toPlainString();//去掉小数点后的0
			if(str.startsWith("0"))
				str = str.substring(1);
			System.out.println(str);
		}
	}
}
//Java帅呆了,自动补头文件啊
//然而多个BigInteger的头

NYOJ 513 A+B Problem IV

import java.math.BigDecimal;
import java.util.Scanner;
public class Main{
	public static void main(String []args){
		Scanner in = new Scanner(System.in);
		BigDecimal esp = new BigDecimal("0.0");
		while(in.hasNext())  
        {  
            BigDecimal a = in.nextBigDecimal();  
            BigDecimal b = in.nextBigDecimal();
            String str = a.add(b).stripTrailingZeros().toPlainString();//去掉小数点后的0  
            BigDecimal sum = a.add(b);
            if(sum.compareTo(esp) == 0)  
            	System.out.println(0);
            else
            	System.out.println(str);  
        }
	}
}

524 A-B

import java.math.BigDecimal;
import java.util.Scanner;
public class Main {
	public static void main(String [] args){
		Scanner in = new Scanner(System.in);

		while(in.hasNext())
		{
			BigDecimal a = in.nextBigDecimal();
			BigDecimal b = in.nextBigDecimal();
			BigDecimal c = a.subtract(b);
			String str = c.stripTrailingZeros().toPlainString();//去掉小数点后的0
			if(str.startsWith("0"))
				System.out.println("YES");
			else
				System.out.println("NO");
		}
	}
}

803 A/B

import java.math.BigInteger;
import java.util.Scanner;
public class Main {
	public static void main(String [] args){
		Scanner in = new Scanner(System.in);
		BigInteger a,b,c;
		String s;
		while(in.hasNext())
		{
			a = in.nextBigInteger();
			s = in.next();
			b = in.nextBigInteger();
			if(s.charAt(0) == '/')
				c = a.divide(b);
			else
				c = a.remainder(b);
			System.out.println(c);
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值