关于java大数的一些操作

来源:互联网 发布:消防知识知多少通讯稿 编辑:程序博客网 时间:2024/06/05 09:45
java大数
关于java大数的操作以及编程注意:
1.编程注意:
    (1).建立java工程的步骤:File-->new-->java project -->输入英文名称,点击finish-->打开工程文件-->右击src-->new-->class-->输入同上英文名称,点击finish完成;
    (2).建立工程,注意文件名称要和class名称相同;而且public class Main {  } ;Main 应为class 名称;
    (3).提交java程序的时候注意若不是public class Main{ };则应改为这样再提交;
2.关于java大数的操作:
import java.io.*;import java.util.*;import java.math.BigInteger;  //java大数头文件;public class Main{    public static void main(String args[])    {        Scanner cin=new Scanner(System.in);      //最先定义输入符为cin;        int n=cin.nextInt();                     //定义一个整数并输入;        BigInteger a=cin.nextBigInteger();       //定义一个大数并输入;//注意括号;        BigInteger b=cin.nextBigInteger();        while(n-->0)                             //循环n次,也可以用for循环;        {            BigInteger ans=BigInteger.ZERO;            ans=a.add(b);                        //a+b;            ans=a.substract(b);                  //a-b;            ans=a.multiply(b);                   //a*b;            ans=a.divide(b);                     //a/b;            ans=a.mod(b);                        //a%b;                                                             //如果你想让a与一个常数进行操作,那么你要先对它进行变量化;            BigInteger x=new BigInteger("4");            ans=a.mod(x);                        int flag=a.compareTo(b);             //比较函数:flag==-1-->小于、flag==0-->等于、flag==1-->大于;        }                while(cin.hasNext())                     //一直循环;//注意括号;        {            System.out.println();                //输出空行;输出函数,自动换行;            System.out.println(a+"+"+b+"="+ans); //这里的加号代表连接;            System.out.println("");              //输出函数,双引号内为要输出的字符串;        }    }}

例题:nyoj168 卡特兰数

代码:

package helloo;import java.io.*;import java.math.BigInteger;import java.math.BigDecimal;import java.util.*;public class helloo{public static void main(String args[]){BigInteger a[]=new BigInteger[110];    a[0]=new BigInteger("1");    a[1]=new BigInteger("1");    a[2]=new BigInteger("2");    a[3]=new BigInteger("5");for(int i=4;i<=100;i++){int x;x=4*i-2;BigInteger t=BigInteger.valueOf(x);a[i]=t.multiply(a[i-1]);x=i+1;t=BigInteger.valueOf(x);a[i]=a[i].divide(t);}Scanner cin=new Scanner(System.in);while(cin.hasNext()){int n=cin.nextInt();if(n==-1)break;System.out.println(a[n]);}}}
java 上编译可以通过,不过提交时要修改一下 helloo--->Main;删除第一行;



java大数模板

/****多组大数相加****/链接:http://acm.hdu.edu.cn/showproblem.php?pid=1047代码:import java.io.*;import java.util.*;import java.math.BigInteger;public class Main{    public static void main(String args[])    {        Scanner cin=new Scanner(System.in);        int n=cin.nextInt();        for(int i=1; i<=n; i++)        {            BigInteger ans=BigInteger.ZERO;            BigInteger m=cin.nextBigInteger();            while(cin.hasNext())            {                if(m.equals(BigInteger.ZERO))                    break;                ans=ans.add(m);                m=cin.nextBigInteger();            }            System.out.println(ans);            if(i!=n)                System.out.println();        }    }}
/****大数取余****/链接:http://acm.hdu.edu.cn/showproblem.php?pid=1212import java.io.*;import java.util.*;import java.math.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 ans=a.mod(b);            System.out.println(ans);        }    }} 
/****Chinese Girls' Amusement****/链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1313代码:import java.io.*;import java.util.*;import java.math.BigInteger;public class Main{    public static void main(String args[])    {        Scanner cin=new Scanner(System.in);               while(cin.hasNext())        {            BigInteger x=new BigInteger("1");            BigInteger y=new BigInteger("2");                        int n=cin.nextInt();            while(n-->0)            {                BigInteger m=cin.nextBigInteger();                if(m.mod(y).equals(BigInteger.ZERO))                {                    m=m.divide(y);                    if(m.mod(y).equals(BigInteger.ZERO))                    {                        m=m.subtract(x);                        System.out.println(m);                    }                    else                    {                        m=m.subtract(y);                        System.out.println(m);                    }                }                else                {                    m=m.subtract(x).divide(y);                    System.out.println(m);                }                                if(n>0)                    System.out.println();            }        }    }}这一道题給坑惨了,这是一道找规律的题目,因为没有找到正确的规律;规律就是如果n为奇数,k=(n-1)/2; 偶数:再判n/2是奇数 k=n/2-2,偶数k=n/2-1;

加:hdu 1002A+B Problem II http://acm.hdu.edu.cn/showproblem.php?pid=1002 
减:百炼2736 http://bailian.openjudge.cn/practice/2736/ 
乘:百炼2980 http://bailian.openjudge.cn/practice/2980/ 

除:百炼2737 http://bailian.openjudge.cn/practice/2737/ 



以下为转载:http://blog.csdn.net/niushuai666/article/details/6972991;

大数阶乘

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

代码如下:

import java.io.*;import java.math.BigInteger;import java.util.*; public class Main{         publicstatic void main(String args[])         {                   Scannercin = new Scanner(System.in);                     intn = cin.nextInt();                   BigIntegerans = BigInteger.ONE;                   for(inti = 1; i <= n; ++i)                            ans= ans.multiply(BigInteger.valueOf(i));                   System.out.println(ans);         }}

 

棋盘覆盖

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

代码如下:

import java.math.BigInteger;import java.util.*;import java.io.*; public class Main{         publicstatic void main(String args[])         {                   Scannerin = new Scanner(System.in);                   inttest = in.nextInt();                   while(test--> 0)                   {                            intn;                            n= in.nextInt();                            BigIntegera = new BigInteger("4");                            for(inti = 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

代码如下:

import java.io.*;import java.math.BigInteger;import java.util.*; public class Main{         publicstatic void main(String args[])         {                   Scannercin = new Scanner(System.in);                     while(cin.hasNext())                   {                            BigIntegera = cin.nextBigInteger();                            BigIntegerb = cin.nextBigInteger();                            if(a.equals(BigInteger.ZERO)&& b.equals(BigInteger.ZERO))                                     break;                            intflag = a.compareTo(b);                            if(flag== -1)                                     System.out.println("a<b");                            elseif(flag == 0)                                     System.out.println("a==b");                            else                                     System.out.println("a>b");                   }         }}

大数加法

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

代码如下:

import java.math.BigInteger;import java.util.*;import java.io.*; public class Main{         publicstatic void main(String args[])         {                   Scannerin = new Scanner(System.in);                   intn = in.nextInt();                              for(inti = 1; i <= n; ++i)                   {                            BigIntegera = in.nextBigInteger();                            BigIntegerb = in.nextBigInteger();                            BigIntegerans = a.add(b);                            System.out.println("Case" + i + ":");                            System.out.println(a+ " + " + b + " = " +ans);                   }         }}

 

递推求值

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

代码如下:

import java.io.*;import java.math.BigInteger;import java.util.*; public class Main{         publicstatic void main(String args[])         {                   Scannercin = new Scanner(System.in);                     BigIntegera[] = new BigInteger[100];                   while(cin.hasNext())                   {                            for(inti = 0; i <= 2; ++i)                                     a[i]= cin.nextBigInteger();                            for(inti = 3; i <= 99; ++i)                                     a[i]= a[i - 1].add(a[i - 2]).add(a[i - 3]);                            System.out.println(a[99]);                   }         }}

高精度幂

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

代码如下:

import java.io.*;import java.math.BigDecimal;import java.util.*; public class Main{         publicstatic void main(String args[])         {                   Scannercin = new Scanner(System.in);                     while(cin.hasNext())                   {                            BigDecimalans = cin.nextBigDecimal();                            intn = cin.nextInt();                            Stringres = ans.pow(n).stripTrailingZeros().toPlainString();                                     //整数去掉小数点和后面的0                            if(res.startsWith("0"))//去掉前导0                            {                                     res= res.substring(1);                            }                            System.out.println(res);                   }         }}




0 0
原创粉丝点击