不知道为什么没人写题解有题目
首先,题面上说
a+b = n -------(A)
a mod b= m -----(B)
0<=a<=10^9
1<=b<=10^9
从B可以推导为。
a=kb + m 其中k>=0
这个式子带入到(A)中得
kb+m +b =n 整理后得到b=(n-m) /(k+1) -----(C)
由于b>=1 ,可知 (n-m)/(k+1)>=1
整理后得到 m,n 需要满足条件 n -m >= k+1 >=1 (R1)
从B中可以推导出隐含条件
b>m ,带入(C)之后可以得到
(n-m)/(k+1) > m 整理后得到
n/m> k +2 >= 2 也就是说 m,n 需要满足条件 n/m >2 (R2) (如果用cpp,注意这个要写成n > m *2 要不然的话可能有int除法把零点几吃了)
不满足(R1) ,(R2)的数据输出-1,其他根据(C)构造结果。
其中令k= 0,b = n -m , a = n - b = m,这个结果构造起来是最简单的,要不还需考虑 k+1要被n-m整除。。嗯 。
教训:
1.要利用所有的隐含条件去卡是否合法
2.自己太弱了,推理过程要写清楚。 写都写不清楚自己肯定更不清楚
3.疲劳的时候应该去休息,要用好的经历去练习
4.要用足够的穿透力去看清事物的本质,觉悟之后才真正开始修行。