#UT134. [USACO1.3.4] 组合锁 Combination Lock
[USACO1.3.4] 组合锁 Combination Lock
组合锁
农民约翰的奶牛不断逃出农场,并引发麻烦。为了防止它们离开,他购买了一个高级组合锁,以保持奶牛无法打开牧场的门。
考虑到奶牛们非常聪明,农民约翰希望确保它们无法轻松打开锁,只是通过尝试许多不同的组合。这个锁有三个拨盘,每个拨盘编号为 1..N(1 <= N <= 100),因为拨盘是圆形的,所以 1 和 N 是相邻的。锁有两个可以打开它的组合,一个是农民约翰设定的,另一个是锁制造商设定的“主”组合。
但是这个锁对错误有小的容忍度,因此只要拨盘上的数字每个与有效组合相距不超过 2 个位置,它也会打开。
例如,如果农民约翰的组合是 (1,2,3),而主组合是 (4,5,6),那么如果它的拨盘设置为 (1,3,5),(因为这足够接近农民约翰的组合),或设置为 (2,4,8)(因为这接近主组合),那么锁就会打开。注意 (1,5,6) 将不会打开锁,因为它不接近任何一个组合。
给定农民约翰的组合和主组合,请确定可以打开锁的拨盘设置的数量。顺序很重要,因此设置 (1,2,3) 与 (3,2,1) 是不同的。
程序名称:combo
输入格式:
- 第1行:一个整数 N。
- 第2行:三个用空格分隔的整数,指定农民约翰的组合。
- 第3行:三个用空格分隔的整数,指定主组合(可能与农民约翰的组合相同)。
示例输入(文件 combo.in):
50
1 2 3
5 6 7
输入详情:
每个拨盘编号为 1..50。农民约翰的组合是 (1,2,3),主组合是 (5,6,7)。
输出格式:
- 第1行:打开锁的独特拨盘设置的数量。
示例输出(文件 combo.out):
249
示例输出解释
这是一个列表:
1,1,1 2,2,4 3,4,2 4,4,5 5,4,8 6,5,6 7,5,9 3,50,2 50,1,4
1,1,2 2,2,5 3,4,3 4,4,6 5,4,9 6,5,7 7,6,5 3,50,3 50,1,5
1,1,3 2,3,1 3,4,4 4,4,7 5,5,5 6,5,8 7,6,6 3,50,4 50,2,1
1,1,4 2,3,2 3,4,5 4,4,8 5,5,6 6,5,9 7,6,7 3,50,5 50,2,2
1,1,5 2,3,3 3,4,6 4,4,9 5,5,7 6,6,5 7,6,8 49,1,1 50,2,3
...