๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/1456)
< ๊ฑฐ์ ์์ >
๋ฌธ์ ํ์ด
๋จผ์ ์๋ผํ ์คํ ๋ค์ค์ ์ฒด ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์์๋ฅผ ๊ตฌํ๋ค. ์ด๋ ๋ฒ์๋ B๊ฐ์ ์ ๊ณฑ๊ทผ์ ์ฌ์ฉํ๋ค.
์์๋ฅผ ํ๋ณํ๋ ๋ฐฐ์ด์ ํ์ํ๋ฉฐ N์ ๊ณฑ์ ๊ตฌํ๋ค. A๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ B๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฑฐ์ ์์ ๊ฐ์๋ฅผ ๊ตฌํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class _1456_ { // ๊ฑฐ์ ์์
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
long A = Long.parseLong(st.nextToken());
long B = Long.parseLong(st.nextToken());
boolean arr[] = new boolean[(int) Math.sqrt(B) + 1];
arr[0] = true;
arr[1] = true;
for (int i = 2; i < ((int) Math.sqrt(B) + 1) / 2 + 1; i++) {
if (!arr[i]) {
for (int j = i + i; j < (int) Math.sqrt(B) + 1; j += i) {
arr[j] = true;
}
}
}
int result = 0;
for (int i = 1; i <= (int) Math.sqrt(B); i++) {
if (!arr[i]) {
long num = Long.valueOf(i);
while ((num*=Long.valueOf(i)) <= B) {
if(num >=A) {
result += 1;
}
if(num > B/Long.valueOf(i)) {
break;
}
}
}
}
System.out.println(result);
}
}
๋ณ์)
A, B : ์ผ์ชฝ, ์ค๋ฅธ์ชฝ ๋ฒ์
arr : ์์ ํ๋ณ
result : ๊ฑฐ์ ์์ ๊ฐ์
๋ ์ ์ A์ B๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ์ด๋, A์ B์ ๋ฒ์๊ฐ 1 ์ด์ 10์ 14์น ์ดํ์ด๋ฏ๋ก long ํ์ ์ผ๋ก ์ ๋ ฅ๋ฐ๋๋ค.
์๋ผํ ์คํ ๋ค์ค์ ์ฒด ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ 0๋ถํฐ B์ ์ ๊ณฑ๊ทผ๊น์ง ์์๋ฅผ ํ๋ณํ๋ค.
์์๋ฅผ ํ๋ณํ๋ ๋ฐฐ์ด์ ์ ์ฒด ํ์ํ์ฌ ์์๋ผ๋ฉด ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) N์ ๊ณฑ์ ๊ตฌํด B์ดํ์ด๊ณ A์ด์์ด๋ฉด result+1์ ํ๋ค.
2) ๋ค์ N+1 ์ ๊ณฑ์ ๊ตฌํ๊ธฐ ์ํด ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ๋์ง ํ์ธํ๋ค. num*Long.valueof(i) > B๋ก ํ์ธํ๋ฉด ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํด ์ ํํ ๋น๊ต๊ฐ ๋ถ๊ฐ๋ฅํ๋ฏ๋ก num > B/Long.valueOf(i)๋ก ํ๋จํ๋ค.
๊ฑฐ์ ์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
* ์ค๋ฒํ๋ก์ฐ๋ก ์ธํ์ฌ ์ ๋๋ก ๋ ๋น๊ต๋ฅผ ํ์ง ๋ชปํด ์ ํํ ๋ต์ ๊ตฌํ ์ ์์๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 5549_ํ์ฑ ํ์ฌ (0) | 2024.03.14 |
---|---|
[Baekjoon] 1990_์์์ธํฐ๋ฆฐ๋๋กฌ (0) | 2024.03.13 |
[Baekjoon] 5636_์์ ๋ถ๋ถ ๋ฌธ์์ด (0) | 2024.03.11 |
[Baekjoon] 3980_์ ๋ฐ ๋ช ๋จ (0) | 2024.03.08 |
[Baekjoon] 2436_๊ณต์ฝ์ (0) | 2024.03.07 |