728x90
https://www.acmicpc.net/problem/1644
1644λ²: μμμ μ°μν©
λ¬Έμ νλ μ΄μμ μ°μλ μμμ ν©μΌλ‘ λνλΌ μ μλ μμ°μλ€μ΄ μλ€. λͺ κ°μ§ μμ°μμ μλ₯Ό λ€μ΄ 보면 λ€μκ³Ό κ°λ€. 3 : 3 (ν κ°μ§) 41 : 2+3+5+7+11+13 = 11+13+17 = 41 (μΈ κ°μ§) 53 : 5+7+11+13+17 = 53 (λ κ°μ§) νμ§λ§ μ°μλ μμμ ν©μΌλ‘ λνλΌ μ μλ μμ°μλ€λ μλλ°, 20μ΄ κ·Έ μμ΄λ€. 7+13μ κ³μ°νλ©΄ 20μ΄ λκΈ°λ νλ 7κ³Ό 13μ΄ μ°μμ΄ μλκΈ°μ μ ν©ν ννμ΄ μλλ€. λν ν
www.acmicpc.net
β λ΄ μμ€ μ½λ
#include<iostream>
#include<vector>
using namespace std;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
int num,count=0,sum=0;
cin >> num;
vector<int>vec;
for (int i = 1; i <= num; i++) {
vec.push_back(i);
}
vec[0] = 0;
//μμ ꡬνκΈ°
for (int i = 2; i <= num; i++) {
if (vec[i - 1] == 0) continue;
for (int j = 2; j*i <= num; j++) {
vec[j*i - 1] = 0;
}
}
//μ°μλ μμλ€μ ν© κ΅¬νκΈ°
for (int i = 0; i < vec.size(); i++) {
if (vec[i] == 0) continue;
for (int j = i; sum <= num; j++) {
if (j < vec.size()) {
if (vec[j] != 0) {
sum += vec[j];
if (sum == num) {
count++;
break;
}
}
}
else break;
}
sum = 0;
}
cout << count;
return 0;
}
π λ¬Έμ νμ΄
#μ°μλ μμλ€μ ν© κ΅¬νκΈ°
- iλ λ§μ μ μμν μμλ₯Ό μ§μ
- jλ iλΆν° μμνμ¬ μμλ€μ ν©κ³κ° num λ³΄λ€ μ»€μ§κΈ° μ κΉμ§ μμλ€μ μ°¨λ‘λλ‘ λνλ€
- λν μμμ ν©μ΄ numκ³Ό κ°μμ§ κ²½μ° κ²½μ°μ μλ₯Ό μ¦κ°μμΌμ€λ€
- λν μμμ ν©μ΄ numλ³΄λ€ μ»€μ§ κ²½μ°, ν©κ³λ₯Ό 0μΌλ‘ μ΄κΈ°ννκ³ κ·Έλ€μ μμλΆν° μ°¨λ‘λλ‘ λν΄λ³Έλ€
728x90