题目链接:点击查看
题目大意:给出 a 和 b ,求解满足条件的 c,d,e,f ,使得:
- d < b
- f < b
- c,e 均为小于等于 4e12 的正整数
题目分析:分情况讨论一下,首先如果 a 和 b 可以约分的话,那么直接约分后,输出 a+1 , b , 1 , b 显然就是答案了,如果不能约分的话,且 b 的相异质因子的个数不超过 1 个的话,那么是无解的,证明如下:(来自官方题解)
最后一种情况就是 b 的相异质因子个数超过一个,对于这种情况可以将条件 1 的公式转换一下:
这样一来,d 和 f 显然就是 b 的两个相异质因子了,而 cf - de = a ,在已知 d 和 f 的前提下,一定有解,且可以用扩展欧几里得来解决,注意最后求出来的答案需要处理一下,因为需要保证 c 和 e 为正整数
在找 d 和 f 的时候也有技巧,如果 sqrt( n ) 暴力去找的话,会超时,所以可以用埃氏筛预处理一下,保存一下每个数字的最大质因子,这样就可以令 d 为该质因子的幂,然后 f = b / d 了
代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include