计算n^k的开头三位和末尾三位(fmod(double x,double y)函数的引入)

C 库函数 double fmod(double x, double y) 返回 x 除以 y 的余数。

所以fmod(x,1)得到的就是小数部分的值(如fmod(3.35,1)==0.35)

https://vjudge.net/contest/219676#problem/C

题意:给你一个数n,让你求这个数的k次方的前三位和最后三位

思路:求最后的三位,可以通过直接取余得到;求前三位则需要一些数学知识对于给定的一个数n,它可以写成10^a,其中这个a为浮点数,则n^k=(10^a)^k=10^a*k=(10^x)*(10^y);其中x,y分别是a*k的整数部分和小数部分,对于t=n^k这个数,它的位数由(10^x)决定,它的位数上的值则有(10^y)决定,因此我们要求t的前三位,只需要将10^y求出,在乘以100,就得到了它的前三位。也就是=pow(10 , 2+fmod(k*log10(n),1))

原文地址:https://www.cnblogs.com/MekakuCityActor/p/8698235.html