☘前言☘
今天是算法零基础打卡的第1天,大家先熟悉一下感觉,课后题我给大家亿点点参考。上链接:
《算法零基础100讲》(第1讲) 幂和对数
🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人
✨联系方式:2201891280(QQ)
⏳全文大约阅读时间: 20min
全文目录
☘前言☘
🎁主要知识点
✨幂和对数运算
📓幂运算
📓对数预算
📓换底公式
✨4的对数计算例题
📓课后习题
231. 2 的幂
326. 3 的幂
342. 4的幂
📑写在最后
🎁主要知识点
✨幂和对数运算
📓幂运算
“幂”是指数运算的结果。其中整数表示多个数相乘,然后小数表示的是根号。
在c语言中可以利用pow(a,b)来计算a^b的值。
📓对数预算
“对数”其实是幂运算的逆运算。
其中T为真数,n为底数,m语言中用log2(T) 和log10(T)来计算对数。
📓换底公式
c语言只有2和10的底数的运算,怎么算任意底数的值呢?
利用换底公式c为任意值。
✨4的对数计算例题
bool isPowerOfFour(int n){ if(n == 0) { return false; // 0不是任何的数的幂 } int x = (int)(log2(n) / log2(4) + 1e-8); // 换底 同时注意精度问题 因为存储二进制能表示的精度有限。 return fabs(n - pow(4, x)) < 1e-8; // 精度范围内都可接受 }
📓课后习题
231. 2 的幂
231. 2 的幂
给你一个整数n,请你判断该整数是否是2的幂次方。如果是,返回 true ;否则,返回false。
如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。
解题思路
在31的范围内看是否有满足条件的解0.0
bool isPowerOfTwo(int n){ for(int i = 0;i < 31;i++) if(pow(2,i) == n) return true; //找到直接返回 else if(pow(2,i) > n) break; //再大也没必要找了 return false; }
326. 3 的幂
326. 3 的幂
给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回true;否则,返回 false 。
整数 n 是 3 的幂次方需满足:存在整数x 使得 n == 3^x
解题思路
换个思路,如果是3的幂次方,则必要除3最后只剩1。
bool isPowerOfThree(int n){ if(n <= 0) return false; //不可能成立 while(n % 3 == 0) n /= 3; //可整除的时候除 if(n == 1) return true; //只剩1肯定就是3的幂 return false; //否则不是 }
342. 4的幂
342. 4的幂
给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回true;否则,返回 false 。
整数 n 是 4 的幂次方需满足:存在整数x使得 n == 4x
解题思路
和上面一样。
bool isPowerOfFour(int n){ if(n <= 0) return false; //不可能成立 while(n % 4 == 0) n /= 4; //可整除的时候除 if(n == 1) return true; //只剩1肯定就是4的幂 return false; //否则不是 }