boj 21870 1

๋ฐฑ์ค€ 21870

๋ฌธ์ œ๋”๋ณด๊ธฐํ’€์ด์™ผ์ชฝ์—์„œ ๋ถ€ํ„ฐ ์„ ํƒํ•  ๊ฒฝ์šฐ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์›์†Œ์˜ ๊ฐœ์ˆ˜๋Š” ⌊|S|/2⌋, ์˜ค๋ฅธ์ชฝ๋ถ€ํ„ฐ ์„ ํƒํ•  ๊ฒฝ์šฐ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์›์†Œ์˜ ๊ฐœ์ˆ˜๋Š”  ⌈|S|/2⌉๋กœ ์ •ํ•ด์ ธ ์žˆ๋‹ค.ํ•œ ๋ฐฉํ–ฅ์„ ์„ ํƒํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ํ•ด๋‹น ๋ฐฉํ–ฅ์˜ ์›์†Œ ์ „์ฒด์˜ GCD๋ฅผ ์„ ํƒํ•˜๊ณ  ๋‚จ์€ ์›์†Œ๋“ค์—์„œ ๋‹ค์‹œ ๋ฐฉํ–ฅ์„ ์„ ํƒํ•˜๋Š” ํƒœ์Šคํฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.๊ทธ๋Ÿฌ๋ฏ€๋กœ ์™ผ์ชฝ์„ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ, ์˜ค๋ฅธ์ชฝ์„ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•ด ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•˜๋ฉด ํ’€๋ฆฌ๋Š” ๋ฌธ์ œ๋‹ค. ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” 2*10^5์ด๊ณ , a๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ „์ฒด ๋ฐฐ์—ด์— ๋Œ€ํ•ด gcd ์—ฐ์‚ฐ์„ ํ•˜๊ฒŒ ๋˜๋Š” ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ O(N log min(a, b))์ด๋‹ค.#include #include #include using namespace std;int N, arr[200001], ans;int gcd(int a, i..

algorithm 2024.07.30