菜鸟求助
台州学院首届新生程序设计竞赛参赛资格
时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte
总提交: 823 测试通过: 203
描述
台州学院首届新生程序设计竞赛迎来了好多参赛选手,多达N个,可是我们的机房计算机很有限,只有M台计算机,每个选手需要占1台计算机。本来应该安排一场资格赛的,可是来不及了,为了体现公平,竞赛组委会只好抽签决定了(希望下次我们的竞赛组织得更好些)。你能确定通过抽签从N个人中抽取M个人坐满机房有多少种可能性吗?
输入
数据的第一行包括一个正整数T,接下来有T组数据,每组数据占一行。
每组数据包含两个整数N(报名的人数,1<=N<=30),M(机房计算机的台数,0<=M<=30)
输出
每组数据输出一个整数,每个输出占一行
样例输入
2
3 1
4 4
样例输出
3
1
题目网址 :http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=2627
[解决办法]
额,是说按照题目的样例输入后出错么?
我试了下你的代码,没问题,样例输入结果和输出一样。
你的Runtime Error(Stack Overflow)是怎么来的?说具体点
还有,下次贴代码的时候把代码写的整齐点,这样看着很费劲~
[解决办法]
测试输入: 输出
1 3 1
-1 -1 无解
你的函数都不能解决。特别是第一种情况更常见(N小于M)。
题外:
1.返回值用int就行了,不需要用到double,从N中无排序抽出M个肯定是整数个可能性
2.在这里用递归效率太差了,可以写成迭代。
3.不要使用简单的a, b之类的变量名字,表示不了任何意思。很费解,万一又有另一段
代码的话,到底a, b哪个对哪个
4.加注释。加了的话代码就可以表示任何信息了,其他人阅读也方便点
我也是个新手,正努力学着去避免3. 4。
csdn发表里有插入代码选项,会生产准确的代码格式。
[解决办法]
if(N<=M)return 1;
else
{//组合问题,如果是c/c++,大致估计下int/long是否会溢出?
//还要记得利用组合的公式,可以方便计算。
ret = (n*(n-1)*...*(n-m+1))/(m!);
}
return ret;
[解决办法]
〔code=C/C++〕代码请放在这里〔/code〕