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

请添加图片描述

☘前言☘

今天是算法零基础打卡的第1天,大家先熟悉一下感觉,课后题我给大家亿点点参考。上链接:
《算法零基础100讲》(第1讲) 幂和对数

🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人
✨联系方式:2201891280(QQ)
全文大约阅读时间: 20min



🎁主要知识点

✨幂和对数运算

📓幂运算

“幂”是指数运算的结果。其中整数表示多个数相乘,然后小数表示的是根号。
n m = n a b = n a b n^m = n ^ { \frac{a}{b} } = \sqrt[b]{n^{a}} nm=nba=bna
在c语言中可以利用pow(a,b)来计算a^b的值。


📓对数预算

“对数”其实是幂运算的逆运算。
T = n m ⟹ l o g n T = m 。 T = n^m \Longrightarrow log_n T = m。 T=nmlognT=m
其中T为真数n为底数,m语言中用log2(T) 和log10(T)来计算对数。


📓换底公式

c语言只有2和10的底数的运算,怎么算任意底数的值呢?
l o g a b = l o g c b l o g c a log_a b = \frac{log_c b}{log_c a} logab=logcalogcb
利用换底公式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;	//否则不是
}

📑写在最后

在补坑,这些当初没写的题解我会一点点补回来0.0

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XingleiGao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值