您的位置:首页 > 其它

FZU 1740 所罗门王最后的密码

2009-12-13 15:04 218 查看

Accept: 17 Submit: 50
Time Limit: 1000 mSec Memory Limit : 32768 KB

Problem Description

亨利男爵,约翰上校和勇敢的猎象人夸特曼又一次在绝代佳人弗拉塔的帮助下破解了所罗门王藏宝洞的按钮密码,紧闭的藏宝洞门缓缓打开。三位寻宝英雄迫不及待地冲进藏宝洞。他们完全被展现在眼前的无数奇珍异宝惊呆了。在他们还没有回过神的时候藏宝洞门又自动关闭了,藏宝洞内变得一片漆黑。藉着宝石发出的荧光他们隐约看到紧闭的洞门边有一串若隐若现的数字。面对突如其来的变故约翰上校和夸特曼的脸上露出了惊恐的神色,而亨利男爵却是气定神闲胸有成竹的样子。原来亨利男爵在开始寻宝前就熟读寻宝秘籍,早已掌握了所罗门王藏宝洞的出门密码的奥秘。根据洞门边显现的数字,用寻宝秘籍上记录的神秘方式输入与其相应的密码就可以再次打开洞门。如何获取与洞门边显现的数字对应的密码?这还得从数百年前流行的一个移棋游戏说起。

棋盘上有若干方格排成一行,每个方格中可放1枚棋子。移棋游戏的规则是任意一枚棋子可以沿水平方向跳过与其相邻的棋子进入空着的方格并吃掉被跳过的棋子。其他方式的棋子移动都不是合法移动。对于棋盘上若干棋子的初始布局,如果存在一种合法着法使得最终棋盘上只剩下1枚棋子,则称这种布局为一个完美布局。例如图4中3枚棋子的布局是一个完美布局,移动2步后棋盘上只剩下1枚棋子。用棋盘上最左端棋子开始到最右端棋子结束的方格状态表示棋盘的初始布局,可将图4中的初始布局表示为1101。其中1表示棋子,0表示空格。在棋盘上有3枚棋子的所有布局中,只有1101和1011这2种布局是完美布局,其他的布局都不是完美布局。例如对于棋盘布局111就无法通过合法移动使得棋盘上最终只剩下1枚棋子。



图3 棋盘上有3枚棋子的完美布局

如果藏宝洞门边显现的数字是n,那么与其对应的出门密码就是在棋盘上有n枚棋子时移棋游戏的完美布局数。试设计一个计算出门密码的算法,即计算移棋游戏的完美布局数。

Input

有多组输入数据,对于每组输入数据的第一行中有1个正整数n,表示藏宝洞门边显现的数字,即移棋游戏的棋盘初始布局中有n枚棋子,0 < n < 15536。

Output

输出计算出的藏宝洞出门密码,即棋盘上有n枚棋子时移棋游戏的完美布局数。

Sample Input

3

Sample Output

2
//不会做, 我是根据别人的代码推出来的答案
//暴力的代码:
#include<iostream>
using namespace std;
int main()
{
int n,i;
unsigned __int64 rs;
while(scanf("%d",&n)!=EOF)
{
if(n==1 || n==2)
printf("1/n");
else if(n==3)
printf("2/n");
else
{
rs=3; i=4;
while(i<n)
{
rs+=3+(i-4)/2*4;
i++;
}
printf("%I64u/n",rs);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐