import java.util.*;
class Main{
public static void main(String[] args){
Scanner kb = new Scanner(System.in);
int m = kb.nextInt();
int n = kb.nextInt();
System.out.println(m/n);
System.out.println(m%n);
}
}
첫째 줄에는 최백준 조교가 가진 돈 n과 돈을 받으러 온 생명체의 수 m이 주어진다. (1 ≤ m ≤ n ≤ 10^1000, m과 n은 10진수 정수)
int (4byte=32bit): -2^31 ~ 2^31
대략 10자리의 수 (-2,147,483,648~2,147,483,648)
long (8byte=64bit): -2^63 ~ 2^63-1
대략 20자리수의 수(-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807)
따라서 java의 기본형으로 표현될 수 없었던 것
그래서 BigInteger를 사용해야 한다.
BigInteger bigNumber = new BigInteger("2000");
BigInteger은 java.math안에 있으며 위와 같이 선언하며
문자열을 인자 값으로 넘겨준다.
또한 문자열이기 때문에 사칙연산이 불가능하여 내부에 있는 메서드를 이용해서 연산한다.
System.out.println("덧셈(+) :" +bigNumber1.add(bigNumber2));
System.out.println("뺄셈(-) :" +bigNumber1.subtract(bigNumber2));
System.out.println("곱셈(*) :" +bigNumber1.multiply(bigNumber2));
System.out.println("나눗셈(/) :" +bigNumber1.divide(bigNumber2));
System.out.println("나머지(%) :" +bigNumber1.remainder(bigNumber2));
단, 제곱근의 경우 좀 다르다.
String a = kb.next();
int b = kb.nextInt();
BigInteger aa = new BigInteger(a);
arr[i] = aa.pow(b);
BigInteger.pow(int)가 온다.
그러나 형변환이 가능하기 때문에
형변환하여 연산할 수 있다.
int int_bigNum = bigNumber.intValue(); //BigIntger -> int
long long_bigNum = bigNumber.longValue(); //BigIntger -> long
float float_bigNum = bigNumber.floatValue(); //BigIntger -> float
double double_bigNum = bigNumber.doubleValue(); //BigIntger -> double
String String_bigNum = bigNumber.toString(); //BigIntger -> String
매우매우 쉬운 문제인데 왜 계속 런타임 에러가 뜨는지... 바보인가 의심했지만
import java.util.*;
import java.math.*;
class Main{
public static void main(String[] args){
Scanner kb = new Scanner(System.in);
String m = kb.next();
String n = kb.next();
BigInteger mm = new BigInteger(m);
BigInteger nn = new BigInteger(n);
System.out.println(mm.divide(nn));
System.out.println(mm.remainder(nn));
}
}