#P6854. 「ICPC World Finals 2021」公平分配

「ICPC World Finals 2021」公平分配

题目描述

在航行于七海并袭击了许多船只之后,红胡子船长和他的海盗同伴们终于准备好分赃了。根据一直以来的传统,船员们围成一个圆,并严格按照海盗等级排序。船长首先从战利品中取出占分数 ff 的一部分,并把剩余部分传给下一个海盗。传到的海盗拿走相同的占分数 ff 的战利品并传给下一个海盗。每个海盗的行为都是相同的,拿走传给他的战利品中占分数 ff 的部分,然后把剩余的部分传给其他人。等级最低的海盗将最后剩下的战利品传给船长,船长再开始另一轮这种「公平」的分配,然后无限继续下去。

幸运的是,二十一世纪的海盗可以使用计算机来避免这个漫长的过程,以及当选取的分数 ff 在某一步不能划分出整数个战利品时有船员顺手牵羊。你被海盗抓住了,现在海盗要求你找出一个合适的分数 ff。作为奖励,红胡子船长答应如果你能找到就留你一命。

分数 ff 需要是一个严格在 0011 之间的有理数。不需要在每一步分配中海盗们都得到整数个战利品。但是,如果无限地进行这个过程,每个海盗被分到的战利品总数必须是一个整数。

输入格式

输入包含两个整数 nnmm,其中 n (6n106)n\ (6\le n\le 10^6) 是海盗数量(包括红胡子船长),m (1m1018)m\ (1\le m\le 10^{18}) 是战利品总数。

输出格式

输出一行两个正整数 ppqq,其中上文提到的 f=pqf=\frac{p}{q}。如果有多个满足条件的分数,输出 qq 最小的,如果还有多个满足条件的分数,输出其中 pp 最小的一个。如果不存在满足条件的分数,输出 impossible 后祈求宽恕即可。

8 51000

1 2

6 91000

2 3

10 1000000000000000000

impossible