http://acm.hdu.edu.cn/showproblem.php?pid=1060
求x^y的前几位
高斯函数x=[x]+{x},[x]为x的整数部分,{x}为x的小数部分
运用对数性质,t=x^y=a*10^n(科学计数法)
lgt=y*lgx=lga+n (n=[lgt],lga={lgt},因为1<=a<10,所以0<=lga<1)
a=10^{lgt}
e=y*lgx, e=e-[e], a=10^e
View Code
1 #include <stdio.h>
2 #include <math.h>
3 int main()
4 {
5 int T;
6 scanf("%d",&T);
7 while (T--)
8 {
9 double n,ans,x;
10 scanf("%lf",&n);
11 x=floor(n*log10(n));
12 ans=pow(10.0,n*log10(n)-x);
13 printf("%d\n",(int)ans);
14 }
15 }