不知道为什么没人写题解有题目

首先,题面上说

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.要用足够的穿透力去看清事物的本质,觉悟之后才真正开始修行。

全部评论

相关推荐

04-18 15:58
已编辑
门头沟学院 设计
kaoyu:这一看就不是计算机的,怎么还有个排斥洗碗?
点赞 评论 收藏
分享
03-16 13:56
湖南大学 C++
牛客872108596号:到现在没消息是挂了吗查看图片
点赞 评论 收藏
分享
评论
5
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务