Chinese Rings |
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) |
Total Submission(s): 53 Accepted Submission(s): 32 |
Problem Description
Dumbear likes to play the Chinese Rings (Baguenaudier). It’s a game played with nine rings on a bar. The rules of this game are very simple: At first, the nine rings are all on the bar.
The first ring can be taken off or taken on with one step. If the first k rings are all off and the (k + 1)th ring is on, then the (k + 2)th ring can be taken off or taken on with one step. (0 ≤ k ≤ 7) Now consider a game with N (N ≤ 1,000,000,000) rings on a bar, Dumbear wants to make all the rings off the bar with least steps. But Dumbear is very dumb, so he wants you to help him. |
Input
Each line of the input file contains a number N indicates the number of the rings on the bar. The last line of the input file contains a number "0".
|
Output
For each line, output an integer S indicates the least steps. For the integers may be very large, output S mod 200907.
|
Sample Input
1 4 0 |
Sample Output
1 10 |
Source
2009 Multi-University Training Contest 3 - Host by WHU
九连环 ---> n连环,规则可以查一下
题意:给定n个环和规则:如果想取下第n个环那么要保证前n-2都取下,第n-1还在 思路:设取下第n个环的最短时间是f[n],那么要想取下第n个环,首先要取下前n-2个即:f[n-2]以及最后一个,所以是 f[n-2]+1, 还有一个第n-1个,要取下它首先要保证第n-2在,所以需要f[n-2](怎么取下来的怎么放上去),现在又要取第n-1个了, 综上所述:f[n] = 2*f[n-2] + f[n-1] + 1, 然后就是构造矩阵了: 不难推出来: | f[n] | | 1 2 1 | | f[n-1]| | f[n-1] | = | 1 0 0 | * | f[n-2]| | 1 | | 0 0 1 | | 1 | 不知道为什么用int就wa,换成longlong就a了,感觉数没有越界啊(
|
HD-2842 Chinese Rings(矩阵应用)
最新推荐文章于 2023-12-13 12:02:05 发布