728x90
https://www.acmicpc.net/problem/3896
3896λ²: μμ μ¬μ΄ μμ΄
λ¬Έμ μ°μν μμ pμ p+nμ΄ μμ λ, κ·Έ μ¬μ΄μ μλ n-1κ°μ ν©μ±μ(μμλ 1μ΄ μλ μμ μ μ)λ κΈΈμ΄κ° nμΈ μμ μ¬μ΄ μμ΄λΌκ³ λΆλ₯Έλ€. μμ μ μ kκ° μ£Όμ΄μ‘μ λ, kλ₯Ό ν¬ν¨νλ μμ μ¬μ΄ μμ΄μ κΈΈμ΄λ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€. kλ₯Ό ν¬ν¨νλ μμ μ¬μ΄ μμ΄μ΄ μμ λλ κΈΈμ΄κ° 0μ΄λ€. μλ₯Ό λ€μ΄, μμ 23κ³Ό 29μ μμ μ¬μ΄ μμ΄μ {24, 25, 26, 27, 28}μ΄κ³ , κΈΈμ΄λ 6μ΄λ€. μ λ ₯ 첫째 μ€μ ν μ€νΈ μΌμ΄μ€μ κ°μ T
www.acmicpc.net
β λ΄ μμ€ μ½λ
#include<iostream>
#include<vector>
using namespace std;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
vector<int> test_case;
int num,temp,strat,end;
bool * vec = new bool[1299710];
//λ²μ λ΄ μμκ° μλ μλ λͺ¨λ trueλ‘ μΈν
for (int i = 2; i < 1299710; i++) {
for (int j = i; i*j>2 && i*j<1299710; j++) {
vec[j*i] = true;
}
}
cin >> num;
for (int i = 0; i < num; i++) {
cin >> temp;
test_case.push_back(temp);
}
for (int j = 0; j < test_case.size(); j++) {
int temp = test_case[j];
//μμκ° μλ κ²½μ°
if (vec[temp] == true) {
strat = temp;
end = temp;
//μμκ° λμ¬ λ κΉμ§ stratκ°μ μ€μ¬μ€λ€
while (true) {
if (vec[--strat]!= true) {
break;
}
}
//μμκ° λμ¬λκΉμ§ endκ°μ μ¬λ €μ€λ€
while (true) {
if (vec[++end]!= true) {
break;
}
}
cout << end - strat<<'\n';
}
//μμμΌ κ²½μ°
else {
cout << 0 << '\n';
}
}
return 0;
}
π λ¬Έμ νμ΄
- λ무 ν° λ°°μ΄μ newλ₯Ό μ΄μ©ν΄μ μ μΈν΄μ£Όμ΄μΌ λλ€
- μμ κ²½μ° λ°°μ΄μ΄ 0μΌλ‘ μλ μ΄κΈ°νκ° λλ€κ³ νλ€
- λ²μ λ΄μ μμκ° μλ μλ€μ μλΌν μ€ν λ€μ€μ 체λ₯Ό μ΄μ©νμ¬ κ±Έλ¬λΈλ€
- μ λ ₯λ°μ μκ° μμκ° μλ κ²½μ°, ν΄λΉ μμμ κ³μ κ°μλ₯Ό μμΌ κ°μ₯ κ°κΉμ΄ μμλ₯Ό μ°ΎμλΈλ€ - strat
- λ§μ°¬κ°μ§λ‘ ν΄λΉ μμμ κ³μ μ¦κ°μμΌ κ°μ₯ κ°κΉμ΄ μμλ₯Ό μ°ΎμλΈλ€ - end
- endμ stratλ₯Ό λΊ κ°μ΄ μ°λ¦¬κ° ꡬνκ³ μ νλ κ°
- μ λ ₯λ°μ μκ° μμμΌ κ²½μ° 0μ μΆλ ₯ν΄μ€λ€
728x90