목록전체 글 (601)
sm 기술 블로그
import java.util.*; import java.io.*; import java.math.BigInteger; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] sBits = br.readLine().split(" "); BigInteger N = BigInteger.valueOf(Integer.parseInt(sBits[0])); int A = Integer.parseInt(sBits[0]); BigInteger K = BigInteger.valueOf(Integer...
BigInteger란? int나 double은 크기 제한이 있기 때문에 매우매우 큰 수는 표현이 불가능하다. 그에 반해 BigInteger는 문자열 형태로 이루어져있기 때문에 숫자 범위를 무한하게 표현이 가능하다. 선언 // 16진법 BigInteger bigIntWithRadix = new BigInteger("64", 16); // 정수로 생성 BigInteger bigIntWithValue = BigInteger.valueOf(100); // 문자열 BigInteger bigIntWithString = new BigInteger("100"); 연산 BigInteger one = new BigInteger("180"); BigInteger two = new BigInteger("60"); System..
import sys input = sys.stdin.readline N, K = map(int, input().split()) A, B = N, K for i in range(1, B): N *= (A-i) K *= (B-i) if(K == 0): K = N print(N//K % 10007) 문제요약 이항계수를 구하고 거기에 10007을 나눈 나머지를 구하라 설명 자세한 로직설명은 아래를 참고하자 https://smhope.tistory.com/293?category=1058420 111. 11050 (이항계수 1) import sys input = sys.stdin.readline N, K = map(int, input().split()) A, B = N, K for i in range(1, B): ..
연산자 '/' 와 '//'의 차이 먼저 둘의 차이는 이렇다 /는 나눗셈을 의미하며 결과가 float로 나타납니다. //는 나눗셈을 의미하며 결과가 int로 나타납니다. /의 경우 >>> type(5/2) //의 경우 >>> type(5//2) 정리 백준문제 이항정리 1과 이항정리 2가 있다. 1에서 int로 무리없이 통과된다면 2는 통과가 불가능하다. 그 이유는 //는 처음부터 int로 결과값을 배출하여 안정적이다. 하지만 /은 float으로 결과값을 배출후 int로 감싸는 경우 불 안정 하여 거기서 N의 나머지 값을 구하면 의도와는 다른 결과값이 나온다. 따라서 앞으로는 int값이 필요하면 나누고 int로 묶는것이 아닌 //을 사용할 수 있도록 하자....