杭电ACM2028,总是WA,为什么呢?运行时,结果都正确啊!请指出我具体错在哪里了,该怎么改?

#include<stdio.h>intmain(){intn,temp,i;longinta[100],t,m;while(scanf("%d",&n)!=EOF){f... #include<stdio.h>
int main()
{
int n,temp,i;
long int a[100],t,m;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=1;i<n;i++)
{
if(a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
t=a[i]*a[i+1];
while(a[i]>0)
{
m=a[i+1]%a[i];
a[i+1]=a[i];
a[i]=m;
}
a[i+1]=t/a[i+1];
}
printf("%ld\n",a[n]);
}
return 0;
}
我使用的是DEV C++;我改成long long 型,结果就不对了,改成__64int,结果就总输出64d。这是为什么呢?
展开
 我来答
匿名用户
2011-10-16
展开全部
long long 你用gcc、
__int64 的输出格式是%I64d
kaixingui2012
2011-10-16 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6220万
展开全部
测试了一下,跟踪调试发现,long long(或__int64)型数据在32位机上运算是错误的!!!
32位机无法支持这样的数据的运算
追问
那该怎么办呢?
追答
如果是要实现超大数运算,只好自己写运算程序了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liurenqi111
2011-10-16
知道答主
回答量:20
采纳率:0%
帮助的人:6万
展开全部
#include<stdio.h>
int main()
{
int n,temp,i;
long int a[100],t,m;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=1;i<n;i++)
{
if(a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
t=a[i]*a[i+1];
while(a[i]>0)
{
m=a[i+1]%a[i];
a[i+1]=a[i];
a[i]=m;
}
a[i+1]=t/a[i+1];
}
printf("%ld\n",a[n]);
}
return 0;
}
我使用的是DEV C++;我改成long long 型,结果就不对了,改成__64int,结果就总输出64d。这是为什么呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b59eb0b
2011-10-16
知道答主
回答量:26
采纳率:0%
帮助的人:18.4万
展开全部
定义用long long,输出用“%I64d”
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式