Leading and Trailing-lightoj1282(快速幂 + 对数运算)
目录
注意
本文最后更新于 2023-11-30,文中内容可能已过时。
1 题目链接
2 题目大意
给定两个数 n,k 求 n^k 的前三位和最后三位。
3 分析
求后三位的话:直接快速幂,对 1000 取模就好了。
求前三位,对于给定的一个数 n, 它可以写成 n=10^a, 其中这个 a 为浮点数,则t=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,就得到了它的前三位。
分析完,我们再整体看,设 n^k=10^z; 那么z=k*log10(n)
fmod(z,1)
可以求出 x 的小数部分。
|
|
4 注
C 库函数 - fmod()
C 库函数 double fmod(double x, double y) 返回 x 除以 y 的余数。
- x — 代表分子的浮点值。
- y — 代表分母的浮点值。 该函数返回 x/y 的余数。
下面的实例演示了 fmod() 函数的用法。
|
|
结果:
|
|
相关内容
- 欧拉函数
- Til the Cows Come Home-poj2387(dijkstra 判断重边)
- 食物链-poj1182(带权并查集经典模板)
- 小希的迷宫-HDU-1272(并查集 or 树性质)
- The-suspects-POJ-1611(并查集)
Buy me a coffee~
支付宝
微信