2128: 炫耀手机
题目描述
小F终于买到了心仪的手机,当然是华为的新款啦。小F有5个好朋友,她把新买的手机拿给朋友们看。手机就在她们手中传递了。小F先把手机给某个朋友,每个朋友欣赏完手机后就把手机传给另外一个人欣赏。当然已经看过手机的人还可以继续接过来欣赏。结果经过n次传递后,手机又回到小F手中(中间过程手机也可能回到过小F手中)。你能知道传递的过程中有多少种传递方式吗?
输入
多组测试数据,每组输入一个整数n(1<=n<=20)
输出
输出传递的种数
样例输入
2
样例输出
5
题解:
这题不就是小学奥数吗?
暴力出奇迹ヾ(≧▽≦*)o(数据水):
用a[i][j]表示当传手机i次时,到编号为j人的总方案数
初始状态为:
a[0][1]=1;
a[0][2]=0;
a[0][3]=0;
a[0][4]=0;
a[0][5]=0;
a[0][6]=0;
最终状态为
a[n][1]
代码:
#include<bits/stdc++.h>
using namespace std;
int n;
long long a[25][10];
int main()
{
while(cin>>n)
{
a[0][1]=1;
a[0][2]=0;
a[0][3]=0;
a[0][4]=0;
a[0][5]=0;
a[0][6]=0;
for(int i = 1; i <= n; ++i)
{
for(int j = 1;j <= 6; ++j)
{
long long sum = 0;
for(int k = 1;k <= 6; ++k)
sum += a[i - 1][k];
a[i][j] = sum - a[i - 1][j];
}
}
cout << a[n][1] << endl;
}
return 0;
}