当前位置: 首页 > 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.gsyq.cn/news/1515837.html

相关文章:

  • 从Arduino到树莓派:手把手教你玩转UART、IIC、SPI通信(附代码)
  • [MongoDB小技巧08]MongoDB 千万级分页性能陷阱:从 Skip 瓶颈到游标分页的架构演进
  • Triton模型服务实战:从Notebook到高可用生产部署
  • StudyFetch:一个 AI 学习工具,怎么靠短视频做到 700 万用户
  • 计算机毕业设计之医疗大数据在疾病预测中的应用探索
  • DLSS Swapper终极指南:3步轻松管理游戏DLSS版本,提升显卡性能
  • GPTs与人类众包真实文本标注能力六维对比
  • 【JAVA毕设源码分享】基于SpringBooot的图书商城系统研究与设计(程序+文档+代码讲解+一条龙定制)
  • 告别信号玄学:手把手教你用PCIe 4.0的RX Lane Margining功能实测信号余量
  • 保姆级教程:H3C S6520交换机端口状态信息全解析(从Speed/Duplex到Peak Rate)
  • 性价比高的直流电机厂家推荐,品牌口碑大揭秘 - mypinpai
  • 终极百度网盘下载加速指南:3分钟解锁高速直链的秘密
  • 【篮球英语】04 装备与穿着:从球鞋到护臂
  • 别再只会git pull了!手把手教你用VSCode的GitLens插件可视化解决代码冲突
  • CRMEB Pro 商品复制/导入二开:为什么从外部平台搬商品最容易把 SKU 和图片搞乱?
  • C++项目里用ONNXRuntime,如何写一段代码让CPU和GPU自动切换(附完整代码)
  • 模板驱动型文档自动化:四层解耦实现工程化内容生产
  • 大棚实践案例分享:厂家排行揭晓,亲测效果告诉你真相
  • AI写教材新选择!低查重工具加持,快速生成符合标准的专业教材!
  • 2026年变频电源选购指南:口碑与性能如何兼得?多家供应商深度分析与真实案例参考 - 优质品牌商家
  • 口碑好的装修公司小红书获客哪家专业
  • vLLM核心原理:PagedAttention与连续批处理如何提升大模型推理吞吐与显存效率
  • 如何5分钟搞定B站视频转文字:免费高效解决方案全攻略
  • 2026年节能验收报告服务公司top5排行:设备更新领域资金申请报告/重大项目社会稳定风险评估报告/合规性优先 - 优质品牌商家
  • 人类最后考试已不够用,Agent最后考试来了!
  • GPT-4稀疏激活原理:1.8万亿参数为何仅用2%计算
  • WorkshopDL深度指南:无需Steam轻松获取创意工坊模组
  • 2026实力之选:黄江激光焊接与精密五金焊接加工企业综合评估 - 品牌发掘
  • STM32F103用硬件SPI跑TLE5012B的三线SSC通信,带角度/速度/温度实时读取和寄存器配置
  • Page Assist:在浏览器中无缝使用本地AI模型的终极指南