杭电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。这是为什么呢? 展开
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
__int64 的输出格式是%I64d
展开全部
测试了一下,跟踪调试发现,long long(或__int64)型数据在32位机上运算是错误的!!!
32位机无法支持这样的数据的运算
32位机无法支持这样的数据的运算
追问
那该怎么办呢?
追答
如果是要实现超大数运算,只好自己写运算程序了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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。这是为什么呢?
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。这是为什么呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
定义用long long,输出用“%I64d”
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询