목록수학 (27)
Dev.baelanche
문제에서 서술해준 대로 GCD = 1, LCM = A*B 인 경우를 찾아서 카운트한다. N = 30 일때 완전탐색으로 (1, 30), (2, 15), (3, 10), (5, 6), (6, 5), (10, 3), (15, 2), (30, 1) 을 찾을 수 있다. 총 개수/2 를 하게되면 N이 큰 수 일때 TLE 가 발생한다. (5, 6) => (6, 5) 로 넘어갈때 오른쪽수보다 왼쪽수가 더 커지게 된다. 이 부분을 체크하여 시간초과를 해결해 주었다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); while(t-->0) { int n = s..
문제 내용은 읽을 필요가 전혀 없고 출력부분에 (|N-M|) 만 확인하면 된다. |-2000000000 - 2000000000| 의 경우 int형을 초과하게 되므로 long타입으로 선언해주면 된다. 쉬운문제이다 보니 이부분을 간과하여 정답률이 꽤나 낮은듯하다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); long n = sc.nextInt(); long m = sc.nextInt(); System.out.println(Math.abs(n - m)); } }
짱짱 쉬운 문제이다. 사각형의 특성상 같은 x좌표에 점이 두개, 같은 y좌표에 점이 두개 있어야 한다. 주어진 입력에서 x, y 좌표 각각에 왕따인 수를 찾아주면 된다. 구현방법은 엄청 많겠지만 간단한 문제인 만큼 편하게 짰다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int x[] = new int[1001]; int y[] = new int[1001]; for(int i=0; i
기존 점화식은 Y / X * 100 이지만 y에 비해 x가 무진장 크다면 0.0000xxxx.... 가 되어 100을 곱해도 0이 되게 된다. 따라서 Y * 100 / X 로 점화식을 짜주고 y * 100이 int의 범위를 벗어날 수 있으므로 long타입으로 해준다. X와 Y가 같지 않은 이상 절대로 확률이 100%가 될 수 없으므로 Y * 100 / X 가 99이면 -1을 출력한다. 그 외의 경우에는 이분탐색으로 기존의 승률보다 높으면서 판수가 가장 적을때를 찾아낸다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); long x = sc.nextInt(); long y = sc..
동원 끝나고 첫 포스팅이다! 여러 방법으로 풀 수 있겠지만 수학으로 풀었다. 정상에 올라간 후에는 미끄러지지 않으므로 내려갈때의 횟수가 1만큼 적다. A = 2, B = 0, V = 5 인 경우, 3번만에 올라갈 수 있지만 x = (5 - 0)/(2 - 0) = 2 로 소수점 이하가 생길시 +1을 해줘야한다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int v = sc.nextInt(); System.out.println((v-b)%(a-b) == 0 ? (v-b)/(a-b) : (v-b)/(a..
최근 한달동안 푼 문제중 가장 어려웠다;;; 1. 10^7 의 제곱은 10^14 이므로 10^7 보다 큰 수들은 소수 여부를 판별하지 않아도 된다. int max = 10000000; boolean prime[] = new boolean[max+1]; 2. 2부터 B보다 작거나 같은 거의 소수들을 리스트에 담는다. ArrayList list = new ArrayList(); for(int i=2; i
n보다 작거나 같은 소수에 대해 문제의 로직을 통해 소수상근수를 구해야 한다. 2는 상근수가 아님을 알려주어서 3부터 n까지의 소수상근수 계산을 수행했다. 상근수가 아님을 알기위해 상근수 계산을 하며 구한값들을 집합에 담아 중복체크를 했다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); boolean prime[] = new boolean[1000001]; for(int i=2; i
일단 소수배열을 구한다. 임의의 수 x 에 대하여 x, n-x 가 모두 소수일때 문제의 조건을 만족한다. public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); boolean prime[] = new boolean[1000001]; for(int i=2; i