当前位置: 首页 > news >正文

GESP7级C++考试语法知识(二、指数函数(1、pow() 函数)


🌟数学魔法函数学院 第五课

《细胞分裂大作战——指数增长》


本课任务

今天,我们将进入一个全新的王国:

🏰 指数函数王国

这里没有风车。

没有炮台。

没有 sin。

没有 cos。

这里最厉害的魔法只有一个:

复制魔法


学完本课后,你将掌握:

✅ 什么是指数增长

✅ 什么是指数函数

✅ C++中的pow()函数

✅ 如何解决翻倍问题

✅ 如何建立指数模型

✅ 学会看到“翻倍”、“倍增”就想到指数


第一章:神奇细胞实验室

1、一天。

阿Q来到皇家实验室。

里面有一个神奇细胞:

🦠


2、科学家说:

这个细胞每过1小时,

都会复制出一个自己。


3、刚开始:

1个细胞

(1)1小时后:

2个细胞

(2)2小时后:

4个细胞

(3)3小时后:

8个细胞

(4)4小时后:

16个细胞

4、阿Q开始记录:

时间(小时)细胞数量
01
12
24
38
416

5、突然阿Q发现:

每次都是:

×2

第二章:发现规律

1、继续往后推:


(1)第5小时:

16 × 2 = 32

(2)第6小时:

32 × 2 = 64

(3)第7小时:

64 × 2 = 128

2、阿Q发现:

1 2 4 8 16 32 64 128

越来越快!


3、这时候国王说:

这种增长方式,

就叫指数增长!


第三章:什么是指数?

1、观察:

1

可以写成:

2⁰

因为:

2⁰ = 1

2、继续:

2 = 2¹

4 = 2²

8 = 2³

16 = 2⁴

3、整理:

小时数量
02⁰
1
2
3
42⁴

4、规律出来了:

第n小时:

2^n


第四章:指数到底是什么意思?

1、很多同学会背:

2³ = 8

却不知道什么意思。


其实非常简单。


2、指数表示:

连续乘多少次。


例如:

意思:

2 × 2

结果:

4

意思:

2 × 2 × 2

结果:

8

2⁵

意思:

2×2×2×2×2

结果:

32

第五章:指数魔法树

1、想象有一棵复制树:

第一层 1 第二层 1 1 第三层 1 1 1 1 第四层 1 1 1 1 1 1 1 1

2、数量:

1 2 4 8 16 32

3、每一层:

×2

这就是指数增长。


第六章:C++中的指数函数

1、问题来了。


如果想计算:

2¹⁰

怎么办?


当然可以写:

2*2*2*2*2*2*2*2*2*2

但是太麻烦了!


2、C++提供了指数函数:

pow()

3、语法:

pow(a,b)

表示:

a^b

4、例如:

pow(2,3)

表示:


结果:

8

第七章:第一个pow程序

#include <iostream> #include <cmath> using namespace std; int main() { cout << pow(2,3); return 0; }

输出:

8

第八章:细胞分裂模拟器

1、输入:

n

2、表示:

经过n小时

3、输出:

细胞数量

4、根据规律:

2^n

5、代码:

#include <iostream> #include <cmath> using namespace std; int main() { int n; cin >> n; cout << pow(2,n); return 0; }

(1)输入:

5

(2)输出:

32

第九章:金币翻倍挑战

1、阿Q发现一个神奇宝箱。


第一天:

1金币

每天翻倍。


第二天:

2

第三天:

4

第四天:

8

第五天:

16

2、第十天呢?


答案:

2⁹ = 512

3、为什么不是2¹⁰?

因为:

第一天已经有1个金币。


这个问题特别容易出错。


第十章:指数增长有多可怕?

1、国王说:

我给你两个奖励。


方案A:

100万元

直接给你。


方案B:

第一天1元 以后每天翻倍 连续30天

2、很多同学选A。


3、实际上:

第30天:

2²⁹ = 536870912

约:

5亿多元

远远超过100万!


这就是指数增长的威力!


第十一章:竞赛中的指数问题

以后会遇到:


1、汉诺塔

移动次数:

2^n-1


2、满二叉树

第n层节点:

2^{n-1}


3、BFS扩散

感染人数翻倍


4、细胞分裂

数量增长


全部都是指数。


第十二章:pow()注意事项

1、有的同学写:

int x = pow(2,10);

2、结果:

1024

没问题。


3、但是:

pow(2,50)

数字会非常大。


4、使用pow()函数:

要使用:

long long

来存储结果。


本课总结

今天我们认识了指数王国最重要的魔法:

✨ 指数函数


1、数学上:

指数表示:

连续乘多少次。

例如:

2^5= 2 * 2 * 2 * 2 * 2 //5个2相乘

2、程序中:

pow(a,b)

表示:

a^b

3、重要思想:

看到“每次乘同一个数”,就要想到指数增长。



竞赛提高篇:


一、pow(a,b) 的返回值是什么类型?

1、有的同学以为:

pow(2,10)

返回的是:

int

实际上不是!


2、C++中的pow()定义在:

#include <cmath>

其主要返回类型是:

double

例如:

cout << typeid(pow(2,10)).name();

得到的是:

double

3、例如:

#include <iostream> #include <cmath> using namespace std; int main() { auto x = pow(2,10); cout << x << endl; return 0; }

输出:

1024

虽然看起来像整数,

但实际上:

double x = 1024.0;

二、为什么竞赛中不建议大量使用 pow()?

1、因为:

pow()

是浮点运算。


2、例如:

cout << pow(2,50);

理论值:

1125899906842624

实际上存储的是:

double

存在误差。


3、所以竞赛里经常看到:

long long ans = 1; for(int i=1;i<=n;i++) ans *= 2;

而不是:

pow(2,n);

三、pow() 能算多大的数?

1、这要看 double 的范围。


2、double 大约能表示:

10 ^ -308 ~ 10 ^ 308

3、也就是说:

pow(10,300)

还能表示。


4、例如:

cout << pow(10,300);

没问题。


5、但是:

cout << pow(10,400);

就会输出:

inf

表示:

Infinity

无穷大。


因为超出 double 范围了。


四、竞赛里更关心的范围

1、虽然 double 能到:

10^308

但整数精度远远没那么大。


2、double 只有:

约15~16位有效数字

3、例如:

pow(2,100)

数值能表示。

但很多低位已经不准确了。


五、long long 能存多大?

1、很多竞赛题用的是:

long long

2、范围:

-2^63 ~ 2^63-1

3、约等于:

-9.22×10^18 到 9.22×10^18

4、所以:

2^60

1.15×10^18

还能放进去。


2^63

就爆掉了。


六、常见竞赛结论

情况1

指数很小

例如:

pow(2,10) pow(3,8)

可以直接用。


情况2

结果要作为整数参与判断

例如:

if(pow(2,n)==1024)

不推荐。


应该写:

long long ans=1; for(int i=1;i<=n;i++) ans*=2;

情况3

计算平方

不要写:

pow(x,2)

直接:

x*x

更快。


七、GESP和NOIP竞赛中的经验

1、要看指数大小

(1)可以放心使用

pow(2,10) pow(3,5) pow(5,6)

(2)需要小心

pow(2,50) pow(3,30) pow(10,18)

2、不建议用于精确整数计算

pow(2,n)

然后直接转:

long long

特别是:

n > 50

容易出问题。


3、给小学生的建议

(1)记住两个重点:

✅ 返回值是double

✅ 特别大的指数可能出现精度误差


(2)所以在信息学竞赛里:

  • 求平方 →x*x

  • 求整数次幂 → 循环乘法或快速幂

  • pow()更适合数学计算和演示指数概念


4、在算法提高阶段,我们专门学习一门神器:

⚔️《快速幂》⚔️

它能在 O(log n) 时间内计算:

2^{1000000000}

这样的超级大指数,这才是竞赛中的标准做法。


下一课:

⚔️《超级银行家——复利增长》⚔️

我们将学习:

  • 利滚利

  • 复利公式

  • 指数函数真正的威力

并且第一次接触现实世界中的指数模型。🚀


http://www.jsqmd.com/news/1004053/

相关文章:

  • 《置身钉内》后续:无招下课,92年技术极客接棒!
  • 如何选择长沙的GEO营销公司 - mypinpai
  • 2026黑龙江除草剂研发生产厂家TOP4:行业实测盘点 - 最新行业资讯
  • 保姆级 AWVS 安装实操教程,零基础从安装到熟练运用!
  • [MongoDB小技巧08]MongoDB 千万级分页性能陷阱:从 Skip 瓶颈到游标分页的架构演进
  • 黑龙江五常稻花香大米厂家推荐,哪些企业更适配采购? - 最新行业资讯
  • 终极智慧树刷课插件:5分钟实现网课自动化学习的完整指南
  • GPT-4稀疏激活机制揭秘:MoE路由原理与工程实践
  • 性价比高的水性脱模剂推荐与口碑分析 - mypinpai
  • 计算机毕业设计之医疗机构电子化注册信息系统设计与实现
  • Triton模型服务实战:从Notebook到高可用生产部署
  • 别再死记硬背74LS138真值表了!手把手教你用面包板实测它的逻辑功能(附完整接线图)
  • Pyston:给 Python 插上 JIT 翅膀,性能提升 30%
  • StudyFetch:一个 AI 学习工具,怎么靠短视频做到 700 万用户
  • 计算机毕业设计之医疗大数据在疾病预测中的应用探索
  • 2026哈尔滨本地广告投放公司TOP4:行业实力总结 - 最新行业资讯
  • 9.9元包邮的YD-RP2040,如何用MicroPython的lcd_i2c库玩转1602屏幕?
  • 3分钟学会:百度网盘提取码智能获取工具完全指南
  • 如何用XUnity自动翻译器轻松打破Unity游戏语言壁垒:完整新手入门指南
  • 【篮球英语】README
  • 别只用来抓包了!Fiddler这些隐藏功能让你的开发效率翻倍
  • DLSS Swapper终极指南:3步轻松管理游戏DLSS版本,提升显卡性能
  • SAS与Python交互实战:保schema、低延迟、合规范的四大生产方案
  • 十大AI培训学校,AI培训机构十大排名(2026年最新6月版) - 全国职业学校推荐官
  • 宁波登攀科技汽车塑胶件注塑加工工艺
  • 性价比高的大平层装修设计公司推荐 - mypinpai
  • 保姆级教程:H3C S6520交换机端口状态信息全解析(从Speed/Duplex到Peak Rate)
  • 2026 世界杯跨境热销,店群卖家巧用工具避开合规风险
  • 如何用3分钟将B站视频变成可编辑文字稿?bili2text智能转录工具完整指南
  • 告别配置混乱:在AUTOSAR MCAL框架下,如何正确配置S32G3的SIUL2引脚(Port/Dio模块详解)