感觉有一年没有做ACM的题目了,以前熟悉的一些算法也都忘得差不多了。感觉就是大概知道自己以前会过。甚至已经有半年多没有真正地写代码了,就想着回头把USACO做完吧。突然着手编程,感觉有点吃力。这算是一个比较简单的题目,但是还是花了一个下午加一个上午的时间才搞定。
题目链接
题目大意:
一个农夫想锁住它的牛,设置了一个有三个数字的锁。牛要打开这个锁就能逃出去。给定一个数字N,锁上的每个数字可以是1~N。这些锁是环形的,因为锁不太准确,所以数字差两位以内也是可以打开锁的。比如N是50的话,其中一个数字锁设定的数字为1那么1, 2, 3, 50. 49都能打开这把锁。这把锁一开始设置了两个密码,一个是农夫设的,一个是锁匠设的。现在给你这个数字N和这两个密码,问你一共有几种情况牛可以打开锁出去。
比如N=50
农夫设的密码是123
锁匠设的密码是567
那么输出就是249,表示有249种组合可以打开这把锁。
注意,这个密码必须是接近其中一个人比如234,这个密码每个数字和农夫设置的密码都在2以内所以可以打开锁。456则是接近锁匠的密码可以打开这个锁。但是254这个密码不接近任何一个密码,因此不能打开这个锁。注意:它是循环的,所以49 50 1这个密码和农夫的也很接近&#