ARC#004 C - 平均値太郎の憂鬱 ( The melancholy of Taro Heikinchi )

平均値太郎の憂鬱 ( The melancholy of Taro Heikinchi )

(N(N+1)/2-M)/N = X/Y

を変形して、

N = 2(X/Y+M/N)-1

Nが整数であることと、0<M/N≦1であることから、Nはfloor(2*X/Y)とfloor(2*X/Y)+1。それぞれについてMを求めて、正しいかチェック。

from fractions import Fraction

X = Fraction(raw_input())

f = False
for i in range(2):
    N = int(2*X)+i
    M = N*(N+1)/2-X*N
    if M==int(M) and 1<=M<=N:
        print N,M
        f = True
if not f:
    print "Impossible"