[BOJ][๐ŸŸก3][๋ฐฑ์ค€#01341] ์‚ฌ์ด์ข‹์€ ํ˜•์ œ

์ž‘์„ฑ:    

์—…๋ฐ์ดํŠธ:

์นดํ…Œ๊ณ ๋ฆฌ:

ํƒœ๊ทธ: , , ,

๋ฌธ์ œ ์ถœ์ฒ˜

BAEKJOON Online Judge #1341


๋ฌธ์ œ

์˜์‹์ด์™€ ๋ฏผ์‹์ด๋Š” ์ผ€์ดํฌ๋ฅผ ๋‚˜๋ˆ„์–ด ๋จน์œผ๋ ค๊ณ  ํ•œ๋‹ค. ์ผ๋‹จ ์˜์‹์ด๊ฐ€ ์ ˆ๋ฐ˜์„ ๋จน๊ณ , ๋ฏผ์‹์ด๊ฐ€ ๋‚จ์€ ์ ˆ๋ฐ˜์„ ๋จน๋Š”๋‹ค. ๋˜ ๊ณ„์† ์ด๋ ‡๊ฒŒ ์ ˆ๋ฐ˜์„ ๋จน๊ณ  ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฌดํ•œ๋ฒˆ ํ•˜๊ณ  ๋‚˜๋ฉด ๊ฒฐ๊ตญ ์ผ€์ดํฌ๋ฅผ ๋‹ค ๋จน๊ฒŒ ๋œ๋‹ค. ํ‘œ๋กœ ๋งŒ๋“ค์–ด ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์˜์‹ ๋ฏผ์‹

1/2 1/4

1/8 1/16

1/32 1/64

1/128 1/256

โ€ฆ โ€ฆ

์œ„์™€ ๊ฐ™์ด ๋จน๊ฒŒ ๋˜๋ฉด ์˜์‹์ด๋Š” ํ•ญ์ƒ ๋ฏผ์‹์ด์˜ ๋‘ ๋ฐฐ๋ฅผ ๋จน๊ฒŒ ๋˜๋ฏ€๋กœ ์ผ€์ดํฌ์˜ 2/3์„ ๋จน๊ฒŒ ๋˜๊ณ , ๋ฏผ์‹์ด๋Š” 1/3์„ ๋จน๊ฒŒ ๋œ๋‹ค. ์ผ€์ดํฌ๋ฅผ ์žฌ๋ฏธ์žˆ๊ฒŒ ๋จน๊ธฐ ์œ„ํ•ด์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํŒจํ„ด์„ ๋งŒ๋“ค๊ธฐ๋กœ ํ–ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ์˜์‹์ด๊ฐ€ ๋จน๊ฒŒ๋˜๋Š” ์ผ€์ดํฌ๋Š” ๋‹ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. ๋งŒ์•ฝ โ€œ์˜์‹,๋ฏผ์‹,์˜์‹โ€๊ณผ ๊ฐ™์ด ๋จน๊ฒŒ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋จน๋Š”๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์˜์‹์ด๋Š” 5/7์„ ๋จน๊ฒŒ ๋œ๋‹ค. ์˜์‹์ด๊ฐ€ ๋จน๊ฒŒ๋˜๋Š” ์ผ€์ดํฌ์˜ ์–‘์ด ๋ถ„์ˆ˜๋กœ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ๋•Œ, ํŒจํ„ด์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์˜์‹ ๋ฏผ์‹ ์˜์‹

1/2 1/4 1/8

1/16 1/32 1/64

1/128 1/256 1/512


์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋‘ ์ •์ˆ˜ a์™€ b๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. a์™€ b๋Š” a/b์—์„œ ๋ถ„์ž์™€ ๋ถ„๋ชจ๋‹ค.


์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๋จน๋Š” ํŒจํ„ด์„ ์ถœ๋ ฅํ•œ๋‹ค. ํŒจํ„ด์€ ์˜์‹์€ *๋กœ, ๋ฏผ์‹์€ -๋กœ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ, ํŒจํ„ด์˜ ๊ธธ์ด๊ฐ€ 60 ์ดํ•˜์ธ ๊ฒƒ์ด ์—†์œผ๋ฉด -1์„ ์ถœ๋ ฅํ•œ๋‹ค.ย ๊ฐ€๋Šฅํ•œ ํŒจํ„ด์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€์ด๋ฉด ์งง์€ ๊ฒƒ์„ ์ถœ๋ ฅํ•œ๋‹ค.


์ œํ•œ

0 โ‰ค a โ‰ค b โ‰ค 263-1 a์™€ b๋Š” ์„œ๋กœ์†Œ


์˜ˆ์ œ

์˜ˆ์ œ 1

์ž…๋ ฅ

2 3


์ถœ๋ ฅ

*-


์˜ˆ์ œ 2

์ž…๋ ฅ

5 7


์ถœ๋ ฅ

*-*


์˜ˆ์ œ 3

์ž…๋ ฅ

0 1


์ถœ๋ ฅ

-


์˜ˆ์ œ 4

์ž…๋ ฅ

5 9


์ถœ๋ ฅ

*---**


์˜ˆ์ œ 5

์ž…๋ ฅ

1 2


์ถœ๋ ฅ

-1


์˜ˆ์ œ 6

์ž…๋ ฅ

76861433640456464 76861433640456465


์ถœ๋ ฅ

********************************************************----


My Sol

def make_mothers():
    global MAXX
    mothers = []
    n = 2
    while n < MAXX:
        mothers.append(n - 1)
        n *= 2
    return mothers


def make_ab(mothers):
    global MAXX
    a, m = map(int, input().split())
    for mother in mothers:
        if not mother%m:
            sq = mother//m
            aa = a*sq
            bb = mother - aa
            return aa, bb
    return 0

def is_odd(n):
    return n%2


def main():
    mothers = make_mothers()
    ret = make_ab(mothers)
    if not ret: return -1
    a, b = ret

    ans = ''
    while a or b:
        if a and is_odd(a):
            if is_odd(b): return -1
            ans = '*' + ans
            a-=1

        elif b and is_odd(b):
            if is_odd(a): return -1
            ans = '-' + ans
            b-=1

        else: return -1

        a, b = a//2, b//2

    return ans if len(ans) <= 60 else -1

MAXX = 2**65
print(main())

๊นŒ๋‹ค๋กœ์šด ๋ฌธ์ œ์˜€๋‹ค.

  1. ์„œ๋กœ์†Œ๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ธฐ ์œ„ํ•œ ๋‚˜๋ˆ„๊ธฐ ์ด์ „์˜ ๋ถ„๋ชจ์˜ ๊ฒฝ์šฐ 2**n-1์˜ ํ˜•ํƒœ์ด๋‹ค. ์ด๋ฅผ mothers์— ์ฐจ๋ก€๋Œ€๋กœ ๋„ฃ๋Š”๋‹ค.
  2. ์ž…๋ ฅ์œผ๋กœ a์™€ m์„ ๋ฐ›๊ณ , m์ด mothers ๋‚ด์— ๋–จ์–ด์ง€๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜ mother๋ฅผ ์ฐพ๋Š”๋‹ค. ํ•ด๋‹น mother์„ ๋ถ„๋ชจ๋กœ ํ•˜๋„๋ก a์™€ b๋ฅผ ๊ตฌ์„ฑํ•ด ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  3. ์ด a์™€ b๋Š” ํ™€์ˆ˜ ๋˜๋Š” ์ง์ˆ˜๋กœ ๊ต์ฐจํ•ด์•ผ ํ•œ๋‹ค. ๋งˆ์ง€๋ง‰์— ๋”ํ•ด์ง„ ์‚ฌ๋žŒ์ด 1์ด๊ณ  ๊ทธ ์ด์ „์—๋Š” 2์”ฉ ๊ณฑํ•˜๋ฉฐ ๋”ํ•˜๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ถ„์ˆ˜์˜ ํŠน์„ฑ์ƒ ๋ถ„๋ชจ๊ฐ€ 2๋ฐฐ์”ฉ ์ปค์ง€๋ฉด ๊ฐ’์€ 2๋ฐฐ์”ฉ ์ž‘์•„์ง€๋ฏ€๋กœ, ๋งˆ์ง€๋ง‰์— 1์„ ๋”ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ด์ „์˜ ๊ฐ’๋“ค์€ ๋งค๋ฒˆ 2๋ฐฐ๋กœ ๊ณฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  4. ์ด ์„ฑ์งˆ์„ ์ด์šฉํ•ด ํ™€์ˆ˜์ธ ์ˆ˜๋ฅผ ํŒ๋‹จํ•˜์—ฌ ์ง์ˆ˜์ฒ˜๋ฆฌํ•˜๊ณ  2๋กœ ๋‚˜๋ˆ„๋ฉฐ ๊ฐ™์€ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•˜๋ฉด ๋˜๊ฐฐ๋‹ค. ๋’ค๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.


๊ฒฐ๊ณผ

๋งž์•˜์Šต๋‹ˆ๋‹ค!!

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ