编程论坛
注册
登录
编程论坛
→
数据结构与算法
求一个编程题目的解法
nancy111
发布于 2021-11-26 12:57, 2027 次点击
球在自己脚下,有n位队友可以进行球传球配合。和队友通过k次传球后,球还在自己脚下,有多少种不同的传球方式。
输入正整数n和m,分别表示小明身边的队友数和传球次数。输出不同的传球方式数(由于该数字可能很大,请输出总方式数对10^9+7的余数即可)
3 回复
#2
diycai
2021-11-26 14:55
m<=1时,无解。
n=1且m为奇数时,无解。
n=1且m为偶数时,1种解。
m=2时, f(m) = n
m>2时, f(m) = n*(f(m-1)+(-1)^m)
递归计算吧。
#3
diycai
2021-11-26 15:16
程序代码:
int
fun(
int
n,
int
m)
{
if
(m <=
1
)
{
return
0
;
}
if
(n ==
1
)
{
if
(m&
1
)
{
return
0
;
}
else
{
return
1
;
}
}
if
(m ==
2
)
{
return
n;
}
if
(m&
1
)
{
return
n*(fun(n, m-
1
)-
1
);
}
else
{
return
n*(fun(n, m-
1
)+
1
);
}
}
void
main()
{
int
n, m;
while
(
1
)
{
scanf(
"
%d%d
"
, &n, &m);
printf(
"
%d\n
"
, fun(n, m));
}
}
大数处理很麻烦,你可以参考https://blog.。
#4
nancy111
2021-11-26 19:18
回复 3楼 diycai
能写出来整个题目的过程么?遇到10^18这样的测试数据要怎么办。查资料说用数组来计算会快很多。
1