【题目链接】

ybt 1069:乘方计算
OpenJudge NOI 1.5 13:乘方计算

【题目考点】

1. 循环求幂

  • 设变量r初始值为1:int r = 1;
  • 循环n次每次循环中输入变量a,将r的值设为r*a:r *= a;
  • 循环结束后,r即为ana^nan

2. 调用乘方函数pow()(存在于<cmath>中)

double pow(double a, double b); 求aba^bab

3. (扩展)快速幂

一般循环求ana^nan时间复杂度为O(n),快速幂求ana^nan时间复杂度为O(logn)

  • 设结果变量r初始值为1:int r = 1;
  • 此时r需要乘以ana^nan才能得到最终结果
    • 如果此时n为奇数,那么r *= a;,此时r还需要乘以n-1个a,使n = n - 1。如果n是偶数,则跳过这一步。(由于n是奇数,整除运算 n/2 的值与 (n-1)/2的值是相等的,所以这一步中n = n - 1可以省略)
    • 此时r需要乘以ana^nan,已知an=(a2)n2a^n=(a^2)^{\frac{n}{2}}an=(a2)2n​,所以使a *= a; n /= 2;后,r需要乘的仍然是ana^nan
  • 重复上述步骤,直到n为0为止。r即为最终结果

4.(扩展)递归求幂

【题解代码】

解法1:循环求幂

#include <bits/stdc++.h>
using namespace std;
int main()
{int a, n, r = 1;cin>>a>>n;for(int i = 0; i < n; ++i)r *= a;cout<<r;return 0;
}

解法2:调用<cmath>中pow()函数

#include<bits/stdc++.h>
using namespace std;
int main()
{int a, n;cin>>a>>n;cout<<(int)pow(a, n);//cout直接输出浮点数相当于用printf以%g形式输出,当有效数字位数很多时会以科学计数法的形式输出。转为int型后就会直接输出数字。return 0;
}

解法3:快速幂

#include<bits/stdc++.h>
using namespace std;
int main()
{int a, n, r = 1;//r:结果cin>>a>>n;while(n > 0){if(n % 2 == 1)r *= a;a *= a;n /= 2;}cout<<r;return 0;
}

解法4:递归求幂

#include <bits/stdc++.h>
using namespace std;
int mi(int a, int n)
{if(n == 0)return 1;elsereturn a * mi(a, n - 1);
}
int main()
{int a, n, r = 1;cin>>a>>n;cout<<mi(a, n);return 0;
}

信息学奥赛一本通 1069:乘方计算 | OpenJudge NOI 1.5 13相关推荐

  1. 信息学奥赛一本通 1070:人口增长 | OpenJudge NOI 1.5 14:人口增长问题

    [题目链接] ybt 1070:人口增长 OpenJudge NOI 1.5 14:人口增长问题 [题目考点] 1. 循环求幂 设变量r初始值为1:int r = 1; 循环n次每次循环中输入变量a, ...

  2. 信息学奥赛一本通 1190:上台阶 | OpenJudge NOI 2.3 3525:上台阶

    [题目链接] ybt 1190:上台阶 OpenJudge NOI 2.3 3525:上台阶 注:ybt 1190最大数据数量为71,而OpenJudge 2.3 3525中最大数据数量为100.如果 ...

  3. 信息学奥赛一本通 1225:金银岛 | OpenJudge NOI 4.6 1797:金银岛

    [题目链接] ybt 1225:金银岛 OpenJudge NOI 4.6 1797:金银岛 [题目考点] 1. 贪心 2. 部分背包问题 [解题思路] 该题为部分背包问题 1. 贪心选择性质的证明: ...

  4. 信息学奥赛一本通 1226:装箱问题 | OpenJudge NOI 4.6 19:装箱问题

    [题目链接] ybt 1226:装箱问题 OpenJudge NOI 4.6 19:装箱问题 [题目考点] 1. 贪心 [解题思路] 该题说是三维立方体,实际上无论是包裹还是产品,高度都是h,因而不用 ...

  5. 信息学奥赛一本通 1216:红与黑 / OpenJudge NOI 2.5 1818

    [题目链接] ybt 1216:红与黑 OpenJudge NOI 2.5 1818:红与黑 [题目考点] 1. 连通块问题 2. 深搜/广搜 [解题思路] 1. 深搜 从第一个格子出发,遍历所有可以 ...

  6. 信息学奥赛一本通 1115:直方图 | OpenJudge NOI 1.9 09

    [题目链接] ybt 1115:直方图 OpenJudge NOI 1.9 09:直方图 [题目考点] 1. 散列存储 也叫哈希存储.其思想为:将要存储的值通过某种算法映射到存储地址,映射算法为散列函 ...

  7. 信息学奥赛一本通 1114:白细胞计数 | OpenJudge NOI 1.9 08

    [题目链接] ybt 1114:白细胞计数 OpenJudge NOI 1.9 08:白细胞计数 [题目考点] 1. 求数组中最大值及其下标 方法1:保存最大值和下标 设置临时最大值变量mx,mx的初 ...

  8. 信息学奥赛一本通 1109:开关灯 | OpenJudge NOI 1.5 31:开关灯

    [题目链接] ybt 1109:开关灯 OpenJudge NOI 1.5 31:开关灯 [题目考点] 1. 模拟 2. 循环.数组 3. 用逗号分隔输出 设标志位:isFirst,表示现在输出的是否 ...

  9. 信息学奥赛一本通 1073:救援 | OpenJudge NOI 1.5 19:救援

    [题目链接] ybt 1073:救援 OpenJudge NOI 1.5 19:救援 [题目考点] 1. 直角坐标系下某点到原点的距离 点(x,y)(x,y)(x,y)到原点的距离d=x2+y2d = ...

最新文章

  1. 中美专利对比:2015年中国上升 美国首降
  2. mysql 去重求总数_Mysql获取去重后的总数
  3. 百叶窗设计原理 html5,Html5百叶窗效果的示例代码_html5教程技巧
  4. 开机故障中的MBR引导故障的排查
  5. 电机控制pid_微电机控制如此简单,揭秘微电机调速的控制,PID控制之双环调速...
  6. VIP客户服务系统设计(四)——按用户角色构思系统功能(上)
  7. 【每日算法Day 90】5种方法:求解数组中出现次数超过一半的那个数
  8. List的Sort自定义排序实例
  9. [KM 树同构Hash DP] BZOJ 3197 [Sdoi2013]assassin
  10. 测试工程师需要准备哪些知识
  11. matlab quiver函数添加图例(比例尺、参考矢量)
  12. SQL SERVER创建字段注释
  13. 也谈Eclipse未自动在gen目录下生成R.java
  14. GPS北斗卫星授时系统(NTP同步时钟设备)应用和发展
  15. 如何备份SolidWorks网络版服务器
  16. 计算机上在网络密码,电脑上怎么使用无线网络密码
  17. QT 基于 百度云语音识别, 基于网易API 接口的歌曲查询,的音乐播放器。
  18. XP SP2及之后的补丁集成法
  19. 赚钱宝 mysql_基于35DIR完善版网站分类目录源码 适合行业/个人网站目录
  20. BGA封装FPGA器件同36对差分线的FMC连接器进行布局布线

热门文章

  1. xheditor富文本框 存值与展示问题
  2. iOS设计模式之单例模式
  3. 利用 Enterprise Library 改善你的应用系统1
  4. 腾讯三面:40亿个QQ号码如何去重?
  5. 校招面试经验小分享,阿里腾讯美团字节实习offer
  6. 都啥年代了,求你别再说Redis是单线程了!
  7. 谈谈阿里所谓的——要性
  8. 【JEECG技术博文】JEECG国际化介绍
  9. sap的ides和ecc分别是什么意思
  10. 基于Spring Cloud及K8S构建微服务应用