a的n次方的高效算法
a^b的高效算法
LZ之所以要贴上这个算法,是因为LZ的一个朋友用这个小算法考过LZ,我当时想到了这个算法,思想有了,但是没有实现出来,但是我朋友用递归的方法写的,但是递归的LZ的理解不是很深刻,所以这里用自己理解的非递归的形式写出来。
#include<stdio.h>
int pow(int a,int b) //不用栈的方法
{int r=1;if(b==0)return 1;if(b==1)return a;while(b>1){if(b%2!=0)r*=a;a*=a;b/=2;}return a*r;
}
int _pow(int a,int b) //用栈操作
{ int stack[65],index=0;int res=1;if(b==0)return 1;if(b==1)return a;while(b>0){stack[index++]=b%2;b/=2;}for(int i=index-1;i>=0;i--){if(stack[i]==0)res*=res;else{res*=res;res*=a;}}return res;
}
int __pow(int a,int b) //最原始的方法,一般都能想到,但是效率很差,
{ int res=1;if(b==0)return 1;for(int i=1;i<=b;i++)res*=a;return res;
}
int main()
{int a,b;while(scanf_s("%d%d",&a,&b)){printf("%d\n",__pow(a,b));printf("%d\n",_pow(a,b));printf("%d\n",pow(a,b));}return 0;
}
原理:
假如 b=13
那么 b的二进制形式为1101,我们知道:
那么:
在这里我们可以利用栈这种数据结构来实现将b转为二进制,大概思路就是这样。
运行截图:
大家有不明白的可以看看这个博主写的,我有一部分也是借鉴这个博主的。
http://blog.csdn.net/pakko/article/details/6890452
a的n次方的高效算法相关推荐
- 《算法心得:高效算法的奥秘(原书第2版)》
<算法心得:高效算法的奥秘(原书第2版)> 基本信息 原书名:Hacker's Delight,Second Edition 原出版社: Addison-Wesley Profession ...
- CVPR2020论文介绍: 3D 目标检测高效算法
CVPR2020论文介绍: 3D 目标检测高效算法 CVPR 2020: Structure Aware Single-Stage 3D Object Detection from Point Clo ...
- 再谈poj2965(高效算法)
在枚举分类中已有暴力枚举的方法解这道题.之后在网上看到大神的高效算法,膜拜之.故copy在此. /*参考高手的高效解法: > 证明:要使一个为'+'的符号变为'-',必须其相应的行和列的操作数为 ...
- 对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符
题目描述 对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符. 给定一个字符串(不一定全为字母)A及它的长度n.请返回第一个重复出现的字符.保证字符串中有重复字符,字符串的长度小于等于500 ...
- ( 设计高效算法 ) 年龄排序 Age Sort Uva 11462
( 设计高效算法 ) 年龄排序 Age Sort Uva 11462 可以使用整数排序法, 内存太小无法堆排序. #include <cstdio> #include <cstrin ...
- 3d 自动生成物体_CVPR2020论文介绍: 3D 目标检测高效算法
CVPR2020论文介绍: 3D 目标检测高效算法 CVPR 2020: Structure Aware Single-Stage 3D Object Detection from Point Clo ...
- 【FFT/IDFT】高效算法
题目: 设x(n)是长度为2N的有限长实序列,X(k)为x(n)的2N点 DFT. (1)试设计用一次N点FFT完成计算X(k)的高效算法; (2)若已知 X(k),试设计用一次N点 IFFT实现求X ...
- 算法心得:高效算法的奥秘 作者:[美] Henry S. Warren, Jr.
书籍信息 名称:<算法心得:高效算法的奥秘>电子书PDF版 作者:[美] Henry S. Warren, Jr. 出版社:机械工业出版社 内容简介 在本书中,作者给我们带来了一大批极为诱 ...
- C#,楔子数(Sphenic Number)的暴力算法与高效算法源代码
楔子数(Sphenic Number)来自于一个题目: Schoolboy Vasya is interested in the problem of distinguishing prime num ...
最新文章
- 焦虑的 BAT、不安的编程语言,揭秘程序员技术圈生存现状!
- ls 中一些你不知道的事
- 直接运行PowerShell脚本
- python画图哆啦a梦-Python小白绘图 哆唻A梦 turtle真的很强大!
- 【渝粤题库】广东开放大学 Java高级编程技术 形成性考核
- php pdf添加水印图片,php pdf添加水印(中文水印,图片水印)
- 计算机网络基础系列(八)TCP三次握手、四次挥手、可靠数据传输、拥塞控制和UDP
- JSP入门必须了解的知识详解
- python的类,复现assert和eval成功失败原因
- MySQL系列之日志汇总:redo log、undo log、binlog、errorlog、slow query log、general log、relay log
- 如何修改PDF,怎么给PDF加页码
- Airflow Timezone
- 工控机CF卡槽无法使用的解决方案
- vue webpack打包名称设置
- serverlet 区别_jsp serverlet 区别
- 测试论坛和网站资源分享
- abp zero mysql_ABP从入门到精通(2):aspnet-zero-core 使用MySql数据库
- [Ubuntu 16.04] [Memos] install ssh
- 【软件】[Qt\C++] 冒泡、希尔、堆排、基数、快排 5种排序Gui界面带对比——使用Qt实现
- 零基础学CocosCreator·第六季-常用编程框架和算法