読者です 読者をやめる 読者になる 読者になる

土下座しながら探索中

主に競技プログラミング

UVa 465 : Overflow

UVa BigInteger

問題リンク:Overflow

問題概要:
a + b
または
a * b
が与えられる(a,bはとても大きい値)
入力をそのまま出力した後に
a が 2^31-1 より大きいなら first number too big と、
b が 2^31-1 より大きいなら second number too big と、
a + b または a * b の結果が 2^31-1 より大きいなら result too big とこの順番で出力せよ

解法:
java で BigInteger を使って計算し問題概要の通りに出力する

コード:

import java.util.*;
import java.io.*;
import java.math.*;

class Main
{

    public static void main(String[] args)
    {
	Scanner in = new Scanner(System.in);

	while(in.hasNext())
	    {
		String line = in.nextLine();
		String a = new String("");
		String b = new String("");
		BigInteger PW = new BigInteger("2147483647");
		int i;
		boolean plus,multi;
		plus = false;
		multi = false;
		for(i=0;i<line.length();i++)
		    {
			if(line.charAt(i) == ' ')continue;
			if(line.charAt(i) == '+')
			    {
				plus = true;
				break;
			    }
			if (line.charAt(i) == '*')
			    {
				multi = true;
				break;
			    }

			   
			a += line.charAt(i);
		    }
		i++;
		for(;i<line.length();i++)
		    {
			if(line.charAt(i) == ' ')continue;
			b += line.charAt(i);
		    }
		BigInteger L = new BigInteger(a);
		BigInteger R = new BigInteger(b);
		System.out.println(line);

		if(L.compareTo(PW) > 0)
		    {
			System.out.println("first number too big");
		    }
		if(R.compareTo(PW) > 0)
		    {
			System.out.println("second number too big");
		    }

		if(plus)
		    {
			BigInteger M = L.add(R);
			if(M.compareTo(PW) > 0)
			    {
				System.out.println("result too big");
			    }
		    }
		if(multi)
		    {
			BigInteger M = L.multiply(R);
			if(M.compareTo(PW) > 0)
			    {
				System.out.println("result too big");
			    }
		    }


	    }

    }

}||<

*1385151525*[UVa][BigInteger] UVa 424 :  Integer Inquiry 
問題リンク:[http://uva.onlinejudge.org/external/4/424.html:title]

問題概要:
とても大きい値が複数与えられる
それらの和をとれ

解法:
javaのBigIntegerを使って足し算する

コード:
>|c|
import java.io.*;
import java.util.*;
import java.math.*;

class Main
{

    public static void main(String args[])
    {
	Scanner in = new Scanner(System.in);

	String st;
	BigInteger ans = new BigInteger("0");
	while(true)
	    {
		st = in.next();
		if(st.compareTo("0") == 0)break;
		ans = ans.add(new BigInteger(st));
	    }
	System.out.println(ans);
    }

}