发表于《一道数论题》
15年7个月前IP:未同步
297046
5楼
上面描述得有错误,因为当时急着去撒尿
我做个事例,比如 5 10 12 13 四个数
第一步,求出两两差值,分别是 1 2 3 5 7 8

第二步,作一个数组,下标从4开始,到8结束。 因为m不可能小于n,所以从n开始;如果m大于等于最大的哪个数,必然是可以的,所以到最大值结束。
将差所在位置置1。即
位置: 4 5 6 7 8
数值: 0 1 0 1 1

第三步,
从4开始,检测 buf[4],buf[8],buf[12],…… 上是否有1,如果有,则失败 // 我这里数组比较小,只到buf[8]就行了
从5开始,检测 buf[5],buf[10],buf[15],…… 上是否有1,如果有,则失败
从6开始,检测 buf[6],buf[12],buf[18],…… 上是否有1,如果没有,则good,就是它了
评论
文号 / 297046

浪迹天涯
名片发私信
学术分 0
总主题 1 帖总回复 23 楼拥有证书:笔友
注册于 2011/01/14 15:23:01最后登录 2018/01/10 01:27:52
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:0

个人简介

暂未填写
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的