对数公式

对数及运算法则

ぐ巨炮叔叔 提交于 2020-03-25 06:29:45
1.对数源于指数,是指数函数反函数   因为:y = a x   所以:x = log a y 2. 对数的定义   【定义】如果 N=a x (a>0,a≠1),即 a 的 x 次方等于 N ( a >0,且 a ≠1),那么数 x 叫做以 a 为底 N 的对数(logarithm),记作:    x=log a N   其中, a 叫做对数的底数, N 叫做真数, x 叫做 “以 a 为底 N 的对数”。   2.1对数的表示及性质:     1 . 以 a 为底 N 的对数记作: log a N     2.以10为底的常用对数: lg N = log 10 N     3.以无理数e(e=2.71828...)为底的自然对数记作: ln N = log e N      4.零没有对数.      5.在实数范围内,负数无对数。 [3]在虚数范围内,负数是有对数的。 -------------------------------------------------------------------------------------------------------------------------------------   注: 自然对数的底数 e :https://www.guokr.com/article/50264/     细胞分裂现象是不间断、连续的

【指数变为对数+理解题目】HDU-1141 Factstone Benchmark

一笑奈何 提交于 2019-12-14 00:10:18
1、理解题目:从1960开始,每十年,翻一倍,1960年是4位,1970年是8位,1980年是16位,1990年是32位,2000年是64位。给定一个年份,就已知其对应的位数,要求的是最大数n,使得n!小于该位数。 2、翻译过来就是1 * 2 * … * n < 2 的 (year-1960)/10+2 次方。由于指数爆炸,数字太大,因此把指数转换为对数,得出(log表示以2为底,而C++中的log()是以10为底,因此要再使用换底公式,log1=log(1.0)/log(2.0):log1+log2+…+logn < (year-1960)/10+2,求出n即可。 代码 # include <iostream> # include <cmath> using namespace std ; int main ( ) { int N ; cin >> N ; while ( N ) { int bit = ( N - 1960 ) / 10 + 2 ; bit = 1 << bit ; double ans = 0.0 ; int i = 1 ; while ( ans < bit ) { ans + = log ( double ( ++ i ) ) / log ( 2.0 ) ; } cout << ( i - 1 ) << endl ; cin >> N ; } return