#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 
...