杭电ACM1996题
解决时间 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);
}
}
我要举报
大家都在看
推荐资讯