BOJ 34088 It's a Mod, Mod, Mod, Mod World 2
·279 words·2 mins
π λ¬Έμ μ 보 # λ§ν¬: https://www.acmicpc.net/problem/34088 π§ κ΄μ°° λ° μ κ·Ό # $K$λ‘ λλ λλ¨Έμ§κ° κ°λ€ = κ³ λ₯Έ λΆλΆμ§ν©μ μμλ€μ μ°¨μ΄κ° λͺ¨λ $K$μ λ°°μμ΄λ€. κ·Έλ¬λ©΄? λΆμκΈ°μ μμλ§? μ κ²½μ¨λ λλκ±°κ°λ€. κ·Όλ° μ«μλ€μ μ°¨μ΄κ° $10^9$κΉμ§μΈλ°… κ·Έλ¬λ©΄ λ무 λ§μλ° ν κ·Όλ° μΌλ¨ μ§κ΄μ μΌλ‘, $K = 2$μΌλ λΉλκΈ°μ§μ μ리μ μν΄ λ΅μ ${N/2}$ μ΄μμ΄κΈ΄ νλ€. κ·Έλ¦¬κ³ μ§κ΄μ μΌλ‘, μ¬λ§ν κ²½μ°μ $K$κ° μμλ λ΅μ΄ μμ κ² κ°λ€. $K$κ° ν΄λλ₯Ό μ΅μ§λ‘ λ§λ€ μ μλ? $K > 1000$ μ―€λΈλ μ΄λ€ μμλΌκ³ νλ©΄, μ΅μ§λ‘ λ§λ€ μ μλ κ² κ°κΈ΄ νλ€. κ·Έλ°λ°, μ΄λ $K$κ° $N/2$κ° μ΄μμ λΆλΆμ§ν©μ λν΄ λλ¨Έμ§κ° κ°μμΌνλ―λ‘, λ€λ₯΄κ² λ§νλ©΄ μ΄λ€ λ μλ₯Ό λ½μμλ 50% μ΄μμ νλ₯ λ‘ $K$λ ν΄λΉ μμ μ½μμ΄λ€. λλ€μΌλ‘ ν μ μμ§ μμκΉ? π» νμ΄ # μ½λ (C++): void solve(){ auto start = chrono::high_resolution_clock::now(); bitset<32000> isPrime; isPrime.set(); isPrime[0] = isPrime[1] = 0; rep(i, 2, 32000) if(isPrime[i]){ for(ll j = (ll)i*i; j < 32000; j += i) isPrime[j] = 0; } vector<int> primes; rep(i, 2, 32000) if(isPrime[i]) primes.push_back(i); int N; cin >> N; vector<ll> A(N); rep(i, 0, N) cin >> A[i]; int ans = (N+1)/2; while(1){ auto end = chrono::high_resolution_clock::now(); auto duration = chrono::duration_cast<chrono::milliseconds>(end - start); if(duration.count() > 900) break; int a = rand() % N, b = rand() % N; int diff = abs(A[a] - A[b]); vector<int> divs; for(int p: primes){ if(p*p > diff) break; if(diff % p == 0){ divs.push_back(p); while(diff % p == 0) diff /= p; } } if(diff > 1) divs.push_back(diff); for(int d: divs){ map<int, int> mp; for(auto x: A) mp[x%d]++; for(auto [_, c]: mp) ans = max(ans, c); } } cout << ans; } π ꡬν μ½λ μ κΈ