[解题报告]《算法零基础100讲》(第1讲) 幂和对数

简介: [解题报告]《算法零基础100讲》(第1讲) 幂和对数

☘前言☘

今天是算法零基础打卡的第1天,大家先熟悉一下感觉,课后题我给大家亿点点参考。上链接:

《算法零基础100讲》(第1讲) 幂和对数


🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人

✨联系方式:2201891280(QQ)

⏳全文大约阅读时间: 20min


全文目录

 ☘前言☘

 🎁主要知识点

        ✨幂和对数运算

             📓幂运算

             📓对数预算

             📓换底公式

        ✨4的对数计算例题

 📓课后习题

              231. 2 的幂

              326. 3 的幂

              342. 4的幂

 📑写在最后

🎁主要知识点

✨幂和对数运算

📓幂运算

“幂”是指数运算的结果。其中整数表示多个数相乘,然后小数表示的是根号。


693b82427b50ba83c37763dc25c727f.png

693b82427b50ba83c37763dc25c727f.png

在c语言中可以利用pow(a,b)来计算a^b的值。


📓对数预算

“对数”其实是幂运算的逆运算。

e3ea31b8d4d91749b91af06e1dcf3cc.png

其中T为真数,n为底数,m语言中用log2(T) 和log10(T)来计算对数。


📓换底公式

c语言只有2和10的底数的运算,怎么算任意底数的值呢?

ffa60e6282b43b205c10ea3e6ab954d.png

利用换底公式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; //否则不是
}


相关文章
|
6月前
|
算法 测试技术 C++
【动态规划】【滑动窗口】【C++算法】 629K 个逆序对数组
【动态规划】【滑动窗口】【C++算法】 629K 个逆序对数组
|
6月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-246 算法训练 猴子吃包子
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-246 算法训练 猴子吃包子
64 2
|
6月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-48 算法训练 关联矩阵
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-48 算法训练 关联矩阵
66 0
|
6月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-42 算法训练 送分啦
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-42 算法训练 送分啦
58 0
|
6月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-8 算法训练 操作格子 线段树
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-8 算法训练 操作格子 线段树
55 0
|
6月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-5 算法训练 最短路
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-5 算法训练 最短路
39 0
|
6月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-3 算法训练 K好数
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-3 算法训练 K好数
65 0
|
6月前
|
算法 Java Serverless
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-444 算法训练 求和问题
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-444 算法训练 求和问题
56 1
|
6月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-439 算法训练 简单字符变换
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-439 算法训练 简单字符变换
54 1
|
6月前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-7 算法训练 逆序对 平衡二叉树
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-7 算法训练 逆序对 平衡二叉树
55 0