#include
int main()
{
int a,b,t;int mult=1;
scanf("%d%d",&a,&b);
while(a>=1 && b<=9)
{
if(b==1) printf("%d",a);
else if((b&1)==1)
{
for(int i=1;i<=(b+1)/2;i++)
{
t=a*a;
mult*=t;
}
}
else
for(int i=1;i<=b/2;i++)
{
t=a*a;
mult*=t;
}
if((b&1)==1) printf("%d\n",mult/a);
else printf("%d\n",mult);
mult=1;
scanf("%d%d",&a,&b);
}
return 0;
}
多组输入数据
每一组输入只有一行,包括两个正整数a和b(1<=a,b<=9)
这道题是求a的b次方,但我上传后,显示超出时间限制。
要看题目要求,怎么结束程序的。
while(a>=1 && b<=9)
你这个是死循环,一直在让用户输入a b
但是oj平台肯定要有个条件退出的。
那不能while(a>=1 && b<=9)
应该
while (scanf("%d%d",&a,&b) != EOF)
或者
while (scanf("%d%d",&a,&b)>0)
#include
int main()
{
int a,b,t;int mult=1;
while (scanf("%d%d",&a,&b) != EOF)
{
if(a<1 || a>9) continue;
else if(a>=1 && b<=9)
{
if(b==1) printf("%d",a);
else if((b&1)==1)
{
for(int i=1;i<=(b+1)/2;i++)
{
t=a*a;
mult*=t;
}
}
else
for(int i=1;i<=b/2;i++)
{
t=a*a;
mult*=t;
}
if((b&1)==1) printf("%d\n",mult/a);
else printf("%d\n",mult);
mult=1;
}
}
return 0;
}
我改成这样就WRONG ANSWER
#include
int main()
{
int a,b,t;int mult=1;
while (scanf("%d%d",&a,&b) != EOF)
{
if(a<1 || b>9 ) continue;
else if(a>=1 && b<=9 && b>=0)
{
if(b==0) printf("%d",1);
if(b==1) printf("%d",a);
else if((b&1)==1)
{
for(int i=1;i<=(b+1)/2;i++)
{
t=a*a;
mult*=t;
}
}
else
for(int i=1;i<=b/2;i++)
{
t=a*a;
mult*=t;
}
if((b&1)==1) printf("%d\n",mult/a);
else printf("%d\n",mult);
mult=1;
}
}
return 0;
}
现在是这样,还是不行啊
你好,这道题很像学校的题目啊,代码里求a的b次方的算法我没仔细看,不过在看到你while代码块里if(a9 ) continue;这一句,不知道是不是和你们
题目要求的条件符合不?如果用户输入的a=10,b=0时会不会符合条件
if(a9 ) continue;抱歉 复制粘贴是格式好像出了点问题