博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
巧用倍增的思想求a^n
阅读量:5910 次
发布时间:2019-06-19

本文共 358 字,大约阅读时间需要 1 分钟。

 学习《浅析倍增思想在信息学竞赛中的应用》(附件下载)上面举例,快速求a^n,比如2^3=8;

用最直观的方法n个a相乘是很慢的,这种实现需要执行n次,而如果用倍增的思想,则可以在logN复杂度中求得结果。

   具体的思路和解说参见附件中的ppt,因为ppt中分析得更透彻,我就不班门弄斧了。直接贴上自己实现的代码。

 
  1. #include<stdio.h> 
  2. int solve(int a,int n){
    //这个程序用来求a^n 
  3.     int ans=1; 
  4.     if(a==0)return 0; 
  5.     while(n){ 
  6.         if(n&1)ans*=a; 
  7.         n>>=1; a*=a; 
  8.     } 
  9.     return ans; 
  10. int main(){ 
  11.     printf("%d",solve(2,10)); 
  12.     //output: 1024 
  13.     return 0; 

 

转载地址:http://qsppx.baihongyu.com/

你可能感兴趣的文章
从零开始学C++之数据封装与抽象:分别用C和C++来实现一个链栈
查看>>
[置顶] IT老男人读《因为痛,所以叫青春》
查看>>
Android NDK学习(3)使用Javah命令生成JNI头文件 .
查看>>
poj2186Popular Cows(Kosaraju算法--有向图的强连通分量的分解)
查看>>
LR基础学习_脚本信息函数
查看>>
基于html5 canvas和js实现的水果忍者网页版
查看>>
2、传统的线程互斥synchronized
查看>>
IT忍者神龟之使用 PowerDesigner
查看>>
JSP导出Excel文件
查看>>
谷歌大神Jeff Dean:大规模深度学习最新进展 zz
查看>>
javaweb学习总结(八)——HttpServletResponse对象(二)
查看>>
CSharpGL(24)用ComputeShader实现一个简单的图像边缘检测功能
查看>>
jquery------提供灵活的方法参数
查看>>
Android ContentProvider和getContentResolver
查看>>
深入理解javascript描述元素内容的5个属性
查看>>
Android 知识梳理
查看>>
poj 1331 Multiply
查看>>
解决java.lang.OutOfMemoryError: unable to create new native thread问题
查看>>
POJ - 3294 Life Forms
查看>>
wallproxy on ubuntu usage
查看>>