NYOJ 大数类总结(java)

棋盘覆盖

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=45

样例输入
3
1
2
3
样例输出
1
5
21

代码如下:

import java.io.*;
import java.util.*;
import java.math.BigDecimal;
import java.math.BigInteger;//声明BigInteger大数类
public class Main
{
    public static void main(String args[])
    {
        Scanner cin = new Scanner(System.in);
        int t=cin.nextInt();
        while(t-->0)
        {
        	int n;
        	n=cin.nextInt();
        	BigInteger a=BigInteger.valueOf(4);
        	for(int i=1; i<n; ++i)
        		a=a.multiply(BigInteger.valueOf(4));
        	System.out.println(a.subtract(BigInteger.valueOf(1)).divide(BigInteger.valueOf(3)));
        }
    }
}

比较大小

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=73

样例输入
111111111111111111111111111 88888888888888888888
-1111111111111111111111111  22222222
0 0
样例输出
a>b
a<b

代码如下:

import java.io.*;
import java.util.*;
import java.math.BigDecimal;
import java.math.BigInteger;//声明BigInteger大数类
public class Main
{
    public static void main(String args[])
    {
        Scanner cin = new Scanner(System.in);
        while(cin.hasNext())
        {
        	BigInteger a=cin.nextBigInteger();
        	BigInteger b=cin.nextBigInteger();
        	BigInteger zero=BigInteger.ZERO;
        	if(a.compareTo(zero)==0&&b.compareTo(zero)==0) break;
        	int f=a.compareTo(b);
        	if(f==-1)
        		System.out.println("a<b");
        	else if(f==0)
        		System.out.println("a==b");
        	else
        		System.out.println("a>b");
        }
    }
}

递推求值

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=114

样例输入
1 1 1
样例输出
69087442470169316923566147

代码如下:

import java.io.*;
import java.util.*;
import java.math.BigDecimal;
import java.math.BigInteger;//声明BigInteger大数类
public class Main
{
    public static void main(String args[])
    {
        Scanner cin = new Scanner(System.in);
        BigInteger fac[]=new BigInteger[100];
        while(cin.hasNext())
        {
        	for(int i=0; i<=2; ++i)
        		fac[i]=cin.nextBigInteger();
        	for(int i=3; i<=99; ++i)
        		fac[i]=fac[i-1].add(fac[i-2]).add(fac[i-3]);
        	System.out.println(fac[99]);
        }
    }
}

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

时间: 2024-11-07 02:22:00

NYOJ 大数类总结(java)的相关文章

HDU高精度总结(java大数类)

  HDU1002   A + B Problem II [题意]大数相加 [链接]http://acm.hdu.edu.cn/showproblem.php?pid=1002 Sample Input 2 1 2 112233445566778899 998877665544332211 Sample Output Case 1: 1 + 2 = 3 Case 2: 112233445566778899 + 998877665544332211 = 1111111111111111110 代码

多校第六场 HDU 4927 JAVA大数类

题目大意:给定一个长度为n的序列a,每次生成一个新的序列,长度为n-1,新序列b中bi=ai+1?ai,直到序列长度为1.输出最后的数. 思路:这题实在是太晕了,比赛的时候搞了四个小时,从T到WA,唉--对算组合还是不太了解啊,现在对组合算比较什么了-- import java.io.*; import java.math.*; import java.util.*; public class Main { public static void main(String[] args) { Sca

Java大数类介绍

java能处理大数的类有两个高精度大整数BigInteger 和高精度浮点数BigDecimal,这两个类位于java.math包内,要使用它们必须在类前面引用该包:import java.math.BigInteger;和import java.math.BigDecimal;或者import java.math.*; 下面从几个方面对BigInteger和BigDecima做一个简单的比较: 一.常量 BigInteger:ONE,ZERO,TEN分别代表1,0,10. 其定义类似于:pub

java大数类操作以及应用(UVA)

首先,先看看java大数的基本操作 Ⅰ基本函数: 1.valueOf(parament); 将参数转换为制定的类型 比如 int a=3; BigInteger b=BigInteger.valueOf(a); 则b=3; String s="12345"; BigInteger c=BigInteger.valueOf(s); 则c=12345: 2.add(); 大整数相加 BigInteger a=new BigInteger("23"); BigIntege

HDU 5047 Sawtooth (JAVA大数类)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5047 题面: Sawtooth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1636    Accepted Submission(s): 637 Problem Description Think about a plane: ● O

Java 大数类BigInteger和BigDecimal的基本函数

在Java中有两个类BigInteger和BigDecimal分别表示不可变的任意精度的整数和不可变的有符号的任意精度的十进制数(浮点数).主要用于高精度计算中.这两个类使得java中的大数,高精度运算变得很简单,至于两个类的对象能表示最大范围不清楚,理论上能够表示无线大的数,只要计算机内存足够大. 这两个类都在java.math.*包中,因此每次必须在开头处引用该包. Ⅰ基本函数: 1.valueOf(parament); 将参数转换为制定的类型 比如 int a=3; BigInteger

Java常用类(二) Scanner类和大数类

二.Scanner类 有C系语言基础的可能都比较熟悉scanf("%d",&a);和cin>>a;这种代码,也打开了程序交互的第一道门.因此,这些程序员开始学Java时都会先找输入输出(指标准输入输出),Java的输出就非常常见,任何一个Java教程基本都是以输出开始的,然而输入却在很后面提到,因为Java的输入不似输出那么简单.现在我们就来介绍一下实现输入的Scanner类. 1.Scanner基本使用方法和next()系列方法 一个从键盘输入的基本示例: imp

JAVA大数类—基础操作(加减乘除、取模、四舍五入、设置保留位数)

当基础数据类型长度无法满足需求时可以使用大数类 构造方法接受字符串为参数 1 BigInteger bInt = new BigInteger("123123"); 2 BigDecimal bDouble = new BigDecimal("123123.123123124"); 基础操作(取模使用divideAndRemainder方法,返回的数组第二个元素为余数): BigDecimal在做除法时必须设定传入精度(保留多少位小数),否则会出现异常:java.l

HDU 5050 Java 大数类+读入二进制

http://acm.hdu.edu.cn/showproblem.php?pid=5050 才知道 原来JAVA这么好用,连二进制都封装好了 in.nextBigInteger(2)  就是按二进制读入 当然a.gcd(b).toString(2)  是按二进制输出一个二进制String,  a,b是大数 另外,JAVA交代码原来是class Main import java.math.BigInteger; import java.util.Scanner; public class Mai