#include<stdio.h> #include<string.h> #define esp 1e20 int fun1(int n,int k) { double res=1.0; double base=n*1.0; while(k) { if(k&1) { res*=base; while(res>=esp) res/=10; } base*=base; while(base>=esp) base/=10; k>>=1; } while(res>=1000) res/=10; return (int) res; } int main() { int ncase,k,n; scanf("%d",&ncase); while(ncase--) { scanf("%d%d",&n,&k); printf("%d\n",fun1(n,k)); } return 0; }
另一种方法:
#include<stdio.h> #include<string.h> #include<math.h> int main() { __int64 x,res; double n,k,y; int ncase; scanf("%d",&ncase); while(ncase--) { scanf("%lf%lf",&n,&k); n=k*log10(n); x=(__int64)(n); y=n-x; res=(__int64)(pow(10,y)*100); printf("%I64d\n",res); } return 0; }