这个C++程序VC++6.0编译通过,为什么在ACM里面是wrong answer ?

Description2^n=C(n,0)+C(n,1)+…+C(n,n)。其中^表示幂,C(n,x)表示组合数,即C(n,x)=n!/((n-x)!x!)。现在给你n(... Description
2^n=C(n,0)+C(n,1)+…+C(n,n)。其中^表示幂,C(n,x)表示组合数,即C(n,x)=n!/((n-x)!x!)。现在给你n(0<=n<=33),要你输出2^n的组合数之和的表达式

输入

每行一个整数n,如果n为负数则输入结束。

输出

每行输出一个表达式,表达式格式形似为2^n=C(n,0)+C(n,1)+…+C(n,n)。

Sample Input

2

3

-1

Sample Output

2^2=1+2+1

2^3=1+3+3+1

#include"iostream"
using namespace std;
int main()
{
int m;
long jie(int x);
while(cin>>m&&m>=0)
{
cout<<"2^"<<m<<"=1";
for(int i=1;i<=m;i++)
cout<<"+"<<jie(m)/(jie(m-i)*jie(i));
cout<<endl;
}
return 0;
}
long jie(int x)
{
long s=1;
for(int i=1;i<=x;i++)
s*=i;
return s;
}
展开
 我来答
忘至白葬不情必0T
2011-12-03 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
会不会是系统的测试数据太大导致long溢出啊??
题目要求n可以取到33,33!超出了long的范围
追问
那用什么,long long吗
追答
我试了下,从n=13开始就溢出了。
就算用_int64也不行,33!有近40位,_int64只能表示近20位的数字
百度网友ecc7578
2011-12-03 · TA获得超过806个赞
知道小有建树答主
回答量:715
采纳率:0%
帮助的人:693万
展开全部
i从2开始循环
更多追问追答
追问
为什么?有关系吗?
追答
。。。我看错了,你的错误是m太大的话就溢出了,你自己试33
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zz417304374
2011-12-03 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:101
采纳率:0%
帮助的人:93.1万
展开全部
ACM 题目判断你是否正确是从很多方面的 比如耗时,内存消耗,是否有特殊例子调用出错等等的 ,他后台是有好多组测试数据专门测试你的代码的;
所以你的自己机子能运行不代表可以通过ACM题;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
100duman
2011-12-03 · TA获得超过966个赞
知道小有建树答主
回答量:1014
采纳率:100%
帮助的人:258万
展开全部
呵呵!ACM没有那么容易的,需要考虑全面,这种题目,不能直接这么搞的
追问
呵呵!帮忙给一个代码赛,谢了啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式