2944. T1-[CSP-S 2023] 密码锁lock
时间限制:1000 MS 内存限制:128 MB
题目描述
## 题目描述 小 $Y $有一把五个拨圈的密码锁。如图所示,每个拨圈上是从$ 0$ 到 $9$ 的数字。每个 拨圈都是从 $0$ 到 $9$ 的循环,即$ 9 $拨动一个位置后可以变成 $0$ 或$ 8$, 图 1: 密码锁 因为校园里比较安全,小$ Y$ 采用的锁车方式是:从正确密码开始,随机转动密码锁 仅一次;每次都是以某个幅度仅转动一个拨圈或者同时转动两个相邻的拨圈。 当小 $Y $选择同时转动两个相邻拨圈时,两个拨圈转动的幅度相同,即小$ Y $可以将 密码锁从$ 0 0 1 1 5 $转成$ 1 1 1 1 5$,但不会转成$ 1 2 1 1 5$。 时间久了,小 $Y$ 也担心这么锁车的安全性,所以小$ Y$ 记下了自己锁车后密码锁的$ *n $*个状态,注意这 $*n $*个状态都不是正确密码。 为了检验这么锁车的安全性,小 $Y $有多少种可能的正确密码,使得每个正确密码 都能够按照他所采用的锁车方式产生锁车后密码锁的全部$ *n $*个状态。 ## 输入格式 从文件$ **lock.in $**中读入数据。 输入的第一行包含一个正整数$ *n$*,表示锁车后密码锁的状态数。 接下来$ *n $*行每行包含五个整数,表示一个密码锁的状态。 ## 输出格式 输出到文件$ **lock.out $**中。 输出一行包含一个整数,表示密码锁的这$ *n $*个状态按照给定的锁车方式能对应多 少种正确密码。 ## 输入 ```in1 1 0 0 1 1 5 ``` ## 输出 ```out1 81 ``` ## 提示 一共有$ 81 $种可能的方案。 其中转动一个拨圈的方案有 $45 $种,转动两个拨圈的方案有 $36 $种。