We will find a way, we always have.

-interstellar

Problem Solving/์ฝ”๋“œํฌ์Šค

[์ฝ”๋“œํฌ์Šค] 1872 D. Plus Minus Permutation

Redddy 2023. 9. 10. 22:21

 

๐Ÿ“– 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 
 
= int(input())  
for _ in range(t):
    n,x,y = map(int, input().split())
 
    comm = n//math.lcm(x,y)
    x_cnt = n//- comm
    y_cnt = n//- comm
    print(sigma(n-x_cnt+1, n)-sigma(1, y_cnt))
cs

 

 

๐Ÿ”— Problem  https://codeforces.com/contest/1872/problem/D

 

Problem - D - Codeforces

 

codeforces.com