https://www.acmicpc.net/problem/2485
2485λ²: κ°λ‘μ
첫째 μ€μλ μ΄λ―Έ μ¬μ΄μ Έ μλ κ°λ‘μμ μλ₯Ό λνλ΄λ νλμ μ μ Nμ΄ μ£Όμ΄μ§λ€(3 ≤ N ≤ 100,000). λμ§Έ μ€λΆν° Nκ°μ μ€μλ κ° μ€λ§λ€ μ¬μ΄μ Έ μλ κ°λ‘μμ μμΉκ° μμ μ μλ‘ μ£Όμ΄μ§λ©°, κ°
www.acmicpc.net
λ¬Έμ
μ§μ μΌλ‘ λμ΄μλ λλ‘μ ν νΈμ κ°λ‘μκ° μμμ κ°κ²©μΌλ‘ μ¬μ΄μ Έμλ€. KOI μμμλ κ°λ‘μλ€μ΄ λͺ¨λ κ°μ κ°κ²©μ΄ λλλ‘ κ°λ‘μλ₯Ό μΆκ°λ‘ μ¬λ μ¬μ μ μΆμ§νκ³ μλ€. KOI μμμλ μμ°λ¬Έμ λ‘ κ°λ₯ν ν κ°μ₯ μ μ μμ λ무λ₯Ό μ¬κ³ μΆλ€.
νΈμμ κ°λ‘μμ μμΉλ κΈ°μ€μ μΌλ‘ λΆν° λ¨μ΄μ Έ μλ κ±°λ¦¬λ‘ ννλλ©°, κ°λ‘μμ μμΉλ λͺ¨λ μμ μ μμ΄λ€.
μλ₯Ό λ€μ΄, κ°λ‘μκ° (1, 3, 7, 13)μ μμΉμ μλ€λ©΄ (5, 9, 11)μ μμΉμ κ°λ‘μλ₯Ό λ μ¬μΌλ©΄ λͺ¨λ κ°λ‘μλ€μ κ°κ²©μ΄ κ°κ² λλ€. λν, κ°λ‘μκ° (2, 6, 12, 18)μ μλ€λ©΄ (4, 8, 10, 14, 16)μ κ°λ‘μλ₯Ό λ μ¬μ΄μΌ νλ€.
μ¬μ΄μ Έ μλ κ°λ‘μμ μμΉκ° μ£Όμ΄μ§ λ, λͺ¨λ κ°λ‘μκ° κ°μ κ°κ²©μ΄ λλλ‘ μλ‘ μ¬μ΄μΌ νλ κ°λ‘μμ μ΅μμλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νλΌ. λ¨, μΆκ°λλ λ무λ κΈ°μ‘΄μ λλ¬΄λ€ μ¬μ΄μλ§ μ¬μ μ μλ€.
μ λ ₯
첫째 μ€μλ μ΄λ―Έ μ¬μ΄μ Έ μλ κ°λ‘μμ μλ₯Ό λνλ΄λ νλμ μ μ Nμ΄ μ£Όμ΄μ§λ€(3 ≤ N ≤ 100,000). λμ§Έ μ€λΆν° Nκ°μ μ€μλ κ° μ€λ§λ€ μ¬μ΄μ Έ μλ κ°λ‘μμ μμΉκ° μμ μ μλ‘ μ£Όμ΄μ§λ©°, κ°λ‘μμ μμΉλ₯Ό λνλ΄λ μ μλ 1,000,000,000 μ΄νμ΄λ€. κ°λ‘μμ μμΉλ₯Ό λνλ΄λ μ μλ λͺ¨λ λ€λ₯΄κ³ , Nκ°μ κ°λ‘μλ κΈ°μ€μ μΌλ‘λΆν° λ¨μ΄μ§ κ±°λ¦¬κ° κ°κΉμ΄ μμλλ‘ μ£Όμ΄μ§λ€.
μΆλ ₯
λͺ¨λ κ°λ‘μκ° κ°μ κ°κ²©μ΄ λλλ‘ μλ‘ μ¬μ΄μΌ νλ κ°λ‘μμ μ΅μμλ₯Ό 첫 λ²μ§Έ μ€μ μΆλ ₯νλ€.
νμ΄
μ λ ₯ λ°μ κ°λ‘μμ μμΉλ€μ μ¬μ΄ κ°μ λ°°μ΄λ‘ μ μ₯νλ€
μλ₯Όλ€μ΄ κ°λ‘μμ μμΉκ° 1,3,7,13 μ΄ μ£Όμ΄μ§λ©΄
벑ν°μλ 2,4,6 μ΄ μ μ₯λλ νν (κ°κ° 3-1, 7-3, 13-7)
(1)
벑ν°μ μλ λͺ¨λ μλ€μ μ΅λ곡μ½μλ₯Ό ꡬνλ€
gcd ν¨μλ μ ν΄λ¦¬λ νΈμ λ²μ μ΄μ©νμ¬ κ°λ¨νκ² κ΅¬ννλ€.
μ΄λ, a>bλ₯Ό νμ ν μ μμΌλ―λ‘ ν¨μ λ΄λΆμμ μμλ₯Ό μλμΌλ‘ μ§μ ν΄μ£Όλλ‘ νλ€
(2)
벑ν°μ μλ μ / λ°©κΈ κ΅¬ν μ΅λ곡μ½μ = ν΄λΉ 거리μ μ¬μ΄μ ΈμΌ ν κ°λ‘μμ κ°―μ +1 μ΄λ€
μλ₯Όλ€μ΄ μ μμ μμ μ΅λ곡μ½μλ 2κ° λμ€λλ°,
1κ³Ό 3 μ¬μ΄λ κ±°λ¦¬κ° 2 μ΄λ―λ‘ 2/2=1 -> μ¬μ΄μ 0κ° μ¬μ
3κ³Ό 7 μ¬μ΄λ κ±°λ¦¬κ° 4 μ΄λ―λ‘ 4/2=2 -> μ¬μ΄μ 1κ° μ¬μ (5 μμΉ)
7κ³Ό 13 μ¬μ΄λ κ±°λ¦¬κ° 6 μ΄λ―λ‘ 6/2=3 -> μ¬μ΄μ 2κ° μ¬μ (9, 11 μμΉ)
μ΄μ κ·Έ μλ₯Ό λν΄μ£Όλ©΄ λ !
μ½λ
#include <iostream>
#include <vector>
using namespace std;
// Greatest Common Divisor : μ΅λ곡μ½μ
int gcd(int a, int b) {
if(a<b) {
int tmp = a;
a = b;
b = tmp;
} // aμ b μμ μ무λ κ²λ κ°λ₯
if(a%b != 0) {
return gcd(b, a%b);
}
return b;
}
int main() {
int n, before, cur;
cin >> n;
vector<int> v(n-1);
cin >> before;
for(int i=0; i<n-1; i++) {
cin >> cur;
v[i] = cur-before;
before = cur;
}
// (1)
int totalGcd = v[0];
for(int i=1; i<v.size(); i++) {
totalGcd = gcd(v[i], totalGcd);
}
// (2)
int ans = 0;
for(int i=0; i<v.size(); i++) {
ans += v[i]/totalGcd - 1;
}
cout << ans;
return 0;
}
'π¦ Changgo > π BOJ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ][C++] λ°±μ€ 1004λ²: μ΄λ¦° μμ (0) | 2024.08.12 |
---|---|
[BOJ][C++] λ°±μ€ 2636λ²: μΉμ¦ (0) | 2024.04.11 |
[BOJ][C++] λ°±μ€ 15686λ²: μΉν¨λ°°λ¬ (0) | 2024.03.11 |
[BOJ][C++] λ°±μ€ 1037λ²: μ½μ (0) | 2024.03.08 |
[BOJ][C++] λ°±μ€ 2849λ²: νμ΄μ λ°ν΄ (0) | 2024.03.06 |