请问ACM FZU 1070 Sharing Candies 怎么做?

来源:百度知道 编辑:UC知道 时间:2024/05/24 20:11:33
http://acm.fzu.edu.cn/problem.php?pid=1070

我TLE好久了,这次用回溯也TLE!
都不知怎么做好,哪位把思路详细说一下,顺便把AC的代码贴上,好吗?
还有能不能问问,遇到这可怜的情况,去哪里请教比较好。
如果是4 8,你的答案就不对了吧?
这个思路也有人告诉过我,不过希望你能AC了再告诉我,好吗?
etdavid2007
不用这样思路又不写又的代码都贴上来吧?

我觉得是这样的,M个糖果分给N个小孩,首先得到 余数(r) = (M%N),再算 N 和 r 的组合数就是结果! C(N,r) .
例:
输入 3 5
余数为2
C(3,2) = 3
输出就是3

#include "stdio.h"
int fun(int);
main()
{int x,i,j,m,a[81][81];
scanf("%d",&x);
for(i=1;i<=x;i++)
for(j=1;j<=2;j++)
scanf("%d",&a[i][j]);
for(i=1;i<=x;i++)
{m=a[i][2]%a[i][1];
if(m!=0) printf("%d\n",fun(a[i][1])*fun(a[i][1]-m)/fun(m));
else printf("%d\n",1);
}
}
int fun(int x)
{int c;
if(x==1||x==0) c=1;
else c=x*fun(x-1);
return(c);
}