목록수학 (27)
Dev.baelanche
에라토스테네스의 체 방법으로 소수 배열을 구해놓고 합성수 k 에 대해 k보다 크면서 가장 가까운 소수 - k보다 작으면서 가장 가까운 소수를 구한다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); boolean prime[] = new boolean[1299710]; for(int i=2; i2 && i*j0) { int k = sc.nextInt(); if(prime[k]) { int s = k; int e = k; while(true) { if(!prime[--s]) break; } while(true) { if(!prime[++e]) break; } System.out.p..
점의 개수가 9, 25, 81 ... 순으로 늘어난다. 위 수는 1 + (2^1), 1 + (2^2), 1 + (2^3) 으로 바꿔줄 수 있다. 따라서 1 + (2^n) 이 점의 개수이다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); long dot = 1 + (long)Math.pow(2, n); System.out.println(dot * dot); } }
컴퓨터를 10개씩 짜른다. 0번째 컴퓨터의 경우 10으로 출력하면 된다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); while(t-->0) { int a = sc.nextInt(); int b = sc.nextInt(); int c = a % 10; for(int i=0; i
각 자리수별로 곱셈을 진행한다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); System.out.println(a * (b%10)); System.out.println(a * ((b/10)%10)); System.out.println(a * (b/100)); System.out.println(a * b); } }
총감독관은 시험장마다 1명 있으므로 (응시자의 수 - B) 를 응시장마다 해준다. 남은 응시자는 C로 나누어주어 최소 수에 더해준다. 쉬운 문제임에도 불구하고 정답률이 낮은편인데, 아마 (응시자의 수 - B)의 과정에서 이 수가 음수가 되었을때의 예외를 고려하지 못해서인게 아닐까 싶다. public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; int n = Integer.parseInt(br.readLine()); int a[] = new int[n]; st..
퇴근전에 5분만에 풀 수 있는 문제를 찾다가 이놈으로 골랐다. n이 최대 100000보다 작으므로 int 형으로 충분히 구현가능하여 문제에서 요구한대로 모든 약수의 합과 n을 비교하였다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true) { StringBuilder sb = new StringBuilder(); int n = sc.nextInt(); if(n == -1) break; int sum = 0; for(int i=1; i
n이 10000이하이므로 10000까지의 소수를 저장해 놓는다. 두 소수의 차이가 가장 작아야 하므로 n/2를 기준으로 반복문을 돌며 소수 쌍을 찾아냈다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); int prime[] = new int[10001]; for(int i=2; i0; i--) { if(prime[i] == 0 && prime[n-i] == 0) { System.out.println(i + " " + (n-i)); break; } } } } }
위 그림처럼 가운데 교차점이 일치하지 않는 다각형의 꼭지점 개수를 구했을때 다각형의 대각선 + 외곽선의 개수와 같다. 다각형에서 대각선이 존재하려면 꼭지점이 최소 4개 이어야 하므로 이 식을 사용하여 푼다. n = 4 일때는 몫이 1로 예외가 되니 그냥 풀어서 쓴다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); System.out.println((n * (n-1) * (n-2) * (n-3)) / 24); } }