永发信息网

杭电ACM1996题

答案:3  悬赏:50  手机版
解决时间 2021-12-30 15:22
  • 提问者网友:泪痣哥哥
  • 2021-12-30 04:53
#include
#include
#include

int main()
{
int T,i;
long long n;
int *p;

scanf("%d",&T);
p=(int *)malloc(sizeof(int)*T);
for(i=0;i {
scanf("%d",&p[i]);
}

for(i=0;i {
n=pow(3,p[i]);
printf("%lld\n",n);
}

return 0;

}
用的是linux下gcc a.c -o a -lm编译,编译通过,几组测试数据也通过,还是wrong,
不是printf("%lld\n",n)的错,考虑到linux下的gcc和windows下的不同,我提交是时候是用的printf("%I64d\n",n)提交的.还是通不过
求解决,只想知道哪里出的问题,不要代码

高分求阿...望高人解决
最佳答案
  • 五星知识达人网友:琴狂剑也妄
  • 2021-12-30 05:18
#include
#include
#include

long long pow3[30];

int main()
{
int T,i;
long long n;
int *p;
pow3[0] = 1;
for(i=1;i<30;i++)
{
pow3[i] = pow3[i-1]*3;
}
scanf("%d",&T);
p=(int *)malloc(sizeof(int)*T);
for(i=0;i {
scanf("%d",&p[i]);
}

for(i=0;i {
printf("%I64d\n",pow3[p[i]]);
}
return 0;

}
全部回答
  • 1楼网友:woshuo
  • 2021-12-30 07:37
29 对应68630377364883,超出long的范围,应该用大数做 long long n;这是啥情况? 你只malloc不free ,会造成内存泄露。
  • 2楼网友:由着我着迷
  • 2021-12-30 06:19
问题在这行  if(n!=m)printf(" "); 换下if里的内容    if(m==(pow(x,3)+pow(y,3)+pow(z,3)))    {     if(++s == 1)     printf("%d",m);     else     printf(" %d", m);    }   }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯