直接循环次方就行了,用递归行了,注意INF的输出就行了,0不能做被除数
#include<cstdio>
#include<cstring>
#include<cmath>
double powX(double a,int b)
{
if(b == 1)
return a;
if(b == 0)
return 1;
double res = powX(a,b>>1);
res*=res;
if(b&1)
res*=a;
return res;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
double a;
int b;
scanf("%lf%d",&a,&b);
if(a == 0 && b <= 0)
{
printf("INF\n");
continue;
}
int exp = fabs(b);
double ans = powX(a, exp);
if(b < 0)
ans = 1.0/ans;
printf("%.2ef\n",ans);
}
return 0;
}