ACM java写法入门

  打2017icpc沈阳站的时候遇到了大数的运算,发现java与c++比起来真的很赖皮,竟然还有大数运算的函数,为了以后打比赛更快的写出大数的算法并且保证不错,特意在此写一篇博客,

记录java的大数运算,也算是ACM java写法的入门:

  学习博客:https://www.cnblogs.com/wkfvawl/p/9377441.html

进入到eclipse界面

第一步:file->new->java project->起名->finish

第二步:进入到刚才建的工程里,右键src->new->package->起名->finish

第三步:进入到刚才建的package里,右键name->new->class->起名(这里起名要注意,因为比赛时如果交java代码,这里的类名就要命名为Main,区分大小写

1.Java的输入与输出

Java的输入是先定义一个scanner,然后用这个进行输入,并且每一种输入都有相应的输入函数,具体如下:

        Scanner cin =new Scanner(System.in);
        int a;
        double b;
        BigInteger c;
        String d;
        a=cin.nextInt();
        b=cin.nextDouble();
        c=cin.nextBigInteger();
        d=cin.next();
        //每种类型都有相应的函数输入
        System.out.println(a);
        System.out.println(b);    
        System.out.println(c);
        System.out.println(d);

下面给几个入门代码:

输出Hello World

package ACM代码;

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    
    public static void main(String args[]) {
        System.out.println("Hello World!");
        
    }
}

计算a+b

package ACM代码;

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    
    public static void main(String args[]) {
        Scanner cin=new Scanner(System.in);
        int a,b;
        a=cin.nextInt();
        b=cin.nextInt();
        System.out.println(a+b);
        
    }
}

多组输入输出

package ACM代码;

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    
    public static void main(String args[]) {
        Scanner cin=new Scanner(System.in);
        int a,b;
        while(cin.hasNext()) {
            a=cin.nextInt();
            b=cin.nextInt();
            System.out.println(a+b);
        }
    }
}

2、下面是重头戏了,大数处理!

下面就开始说大数的相关操作

首先我们需要导包,即BigIntegr类 和 BigDecimal类所在的包

import java,math.*;

*就代表导入包math里面所有的类,如果你不喜欢看到 *

那么你也可以写 import java,math.BigInteger; import java,math.BigDecimal;

1.大整数的加减乘除求余等计算:

/*
 * 大数的加减运算不同于普通函数的加减乘除运算
 * 加----a+b:a=a.add(b)
 * 减----a-b:a=a.subtract(b)
 * 乘----a*b:a=a.multiply(b)
 * 除----a/b:a=a.divide(b)
 * 求余--a%b:a=a.mod(b)
 * 转换--a=b:b=BigInteger.valueOf(a)
 * 比较--if(ans.compareTo(x)==0) System.out.println("相等")
 * System.out.println("a + b = "+ans_add); // 这里的‘+’ (第二个) 是连接的意思
 */

package ACM代码;

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    
    public static void main(String args[]) {
        Scanner cin=new Scanner(System.in);
        BigInteger a,b,x,y;
        BigInteger ans_add,ans_sub,ans_mul,ans_div,ans_mod;
        a=cin.nextBigInteger();
        b=cin.nextBigInteger();
        ans_add=a.add(b);
        ans_sub=a.subtract(b);
        ans_mul=a.multiply(b);
        ans_div=a.divide(b);
        ans_mod=a.mod(b);
        x=BigInteger.valueOf(1);//转化
        System.out.println("a+b="+ans_add);
        System.out.println("a-b="+ans_sub);
        System.out.println("a*b="+ans_mul);
        System.out.println("a/b="+ans_div);
        System.out.println("a%b="+ans_mod);
        System.out.println("x="+x);
        if(a.compareTo(b)==0) //比较是否相等
            System.out.println("相等");
        else 
            System.out.println("不相等");
        
    }
}

3、下面来几道题目练练手:

UVA—10106:a*b

题目链接:https://vjudge.net/problem/UVA-10106

看代码:

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    
    public static void main(String args[]) {
        Scanner cin=new Scanner(System.in);
        BigInteger a,b;
        while(cin.hasNext()) {
            a=cin.nextBigInteger();
            b=cin.nextBigInteger();
            System.out.println(a.multiply(b));
        }
        
    }
}

猜你喜欢

转载自www.cnblogs.com/caijiaming/p/10720738.html