๐ Solution
๋ฌธ์ ์ ์๊ตฌ์ฌํญ์ ์ ๋ฆฌํด๋ณด๋ฉด ๊ธธ์ด n์ ์กฐํฉ์ค์์ x๋ฐฐ์์ ์ซ์์ ํฉ์์ y๋ฐฐ์์ ์ซ์์ ํฉ์ ์ฐจ๋ฅผ ๊ฐ์ฅ ํฌ๊ฒ ๋ง๋ค ์ ์๋ ์กฐํฉ์ ์ฐพ๊ณ ๊ทธ ์ฐจ๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค.
A - B์ ์ฐจ๋ฅผ ํฌ๊ฒ ๋ง๋ค๊ธฐ ์ํด์๋ A๋ฅผ ์ต๋ํ ํฌ๊ฒ, B๋ฅผ ์ต๋ํ ์๊ฒ ๋ง๋ค๋ฉด ๋๋ค. ๊ทธ๋ ๋ค๋ฉด x์ ๋ฐฐ์ ์์น์๋ n๋ถํฐ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐฐ์นํ๊ณ , y์ ๋ฐฐ์ ์์น์๋ 1๋ถํฐ ์ค๋ฆ์ฐจ์์ผ๋ก ๋ฐฐ์นํ๋ฉด ๋๋ค.
๋์ด ๊ฒน์น๋ ๋ถ๋ถ์ด ์์ ์ ์๋๋ฐ ์ด๋ 0์ด ๋๊ธฐ ๋๋ฌธ์ ์๊ด์๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด์ ๊ตฌํด์ผ ํ๋ ์ ์ n์์ x ๋ฐฐ์์ ๊ฐฏ์, y ๋ฐฐ์์ ๊ฐฏ์ ๊ทธ๋ฆฌ๊ณ ๊ฒน์น๋ ๋ถ๋ถ์ด๋ค. ์ด ๊ฒน์น๋ ๋ถ๋ถ์ lcm ์ ์ฌ์ฉํ์ฌ ์ฐพ์ ์ ์๋ค.
๐ป Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import sys, math input = sys.stdin.readline def sigma(a,b): return (b*(b+1))//2 - (a*(a-1))//2 t = int(input()) for _ in range(t): n,x,y = map(int, input().split()) comm = n//math.lcm(x,y) x_cnt = n//x - comm y_cnt = n//y - comm print(sigma(n-x_cnt+1, n)-sigma(1, y_cnt)) | cs |
๐ Problem https://codeforces.com/contest/1872/problem/D
'Problem Solving > ์ฝ๋ํฌ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฝ๋ํฌ์ค] 1426 D. Non-zero Segments - ํ์ด์ฌ (0) | 2022.07.08 |
---|---|
[์ฝ๋ํฌ์ค] A. Team - ํ์ด์ฌ (0) | 2022.07.07 |