【第1讲】幂和对数

概念定义

一: 幂

1.幂可以理解为是数字运算的结果。例如我们所的二的三次幂,二的四次幂等等,我们通常说二的三次幂是八,二的四次幂是十六,你看,这样对比一下是不是就可以更好的知道了幂是数字运算的结果。
2.nm我们叫做n的m次幂,或者n的m次方。当n为正数和负数的时候,分别代表着不同的计算方式。

1.pow()

那么计算一个数的n次方,我们难道每次都需要手动自己写出来吗?不需要。C语言给我们提供好了pow(a,b)这个函数,代表着a的b次幂。

2. 两点注意
(1): 头文件

注意使用这个函数的时候,要记得加上头文件<math.h>

(2): 注意返回值

这个函数的返回值是double类型。

(3): 示例
#include <stdio.h>
#include <math.h>
int main()
{
	int a = 2;
	int b = 0;
	double c = pow(a,b);
	printf("%lf\n",c);
	return 0;
}
运行结果

如图所示:
在这里插入图片描述

二: 对数

可以理解为是求n的m次幂的逆运算,类似于积分和微分一样。

三: 换底公式

l o g a b log_ab logab = = = l o g c b l o g c a \frac {log_cb}{log_ca} logcalogcb

在C语言中,我们要求以 a a a为底 b b b的对数,只需要将底换成2求解即可。

题目描述

给定一个整数 n n n,写一个函数来判断它是否是4的幂。如果是,返回true;否则,返回false.。整数 n n n 4 4 4的幂次方需要满足:存在整数 x x x使得 n n n = = = 4 x 。 4^x。 4x

解题思路 反复想一想就差不多会了

如果 n n n 4 4 4的对数,那么一定会有 l o g 4 n = l o g 2 n l o g 2 4 = x log_4n=\frac{log_2n}{log_24}=x log4n=log24log2n=x 为整数。那么我们只要求出来这个x,然后计算4的n次方是否在误差范围内n想等即可。
这里提到了误差,是因为计算 4 4 4 n n n次方需要使用 p o w ( a , b ) pow(a,b) pow(a,b)这个函数,而且刚才也提到,这个函数的返回值是double类型,要知道浮点数在我们计算机中是无法精确表示的,所以有误差

解题代码 代码虽短,可不要不敲哦

#include <stdio.h>
#include <math.h>
int main()
{
	int n;
	scanf("%d",&n);
	if (0 == n)
	{
		printf("NO\n");
		return 0;
	}
	int x;
	x = (int)(log2(n)/log2(4) + 1e-8);//(1)
	printf("%s\n",fabs(pow(4,x) - n) < 1e-8 ? "YES" : "NO");//(2)
	return 0;
}
  1. 这里为啥要加上10-8呢?我个人认为是这样的 : : :log返回值是double类型,那么比如说返回结果是2.99999999999,如果我们没有加上10-8,那么强转成int类型的话,那么就直接变成2了,那么就会导致误差很大。所以加上这个10^-8应该是为了减小误差。
  2. 由于浮点数有精度的误差,那么需要和10-8比较一下,从而使得精度高一些,误差小一些。

写在最后

该文章内容是我阅读了CSDN博主英雄哪里出来的博文后,自己记录的一些观点和想法,希望对大家有帮助。英雄哪里出来的对应博文地址:传送门

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值