HDU 2035 人见人爱A^B(二分求幂,快速求幂)
题意:求A的B次方的后三位数字
思路1:常规求幂,直接取余求解
代码:
#include<iostream>
#include<cstdio>
using namespace std; int main(){
int a,b;
int ans;
while(~scanf("%d%d",&a,&b)){
if(a==&&b==) break;
a=a%;//底数取余
ans=;
while(b--){
ans=(ans*a)%;//结果取余
}
printf("%d\n",ans);
}
return ;
}
思路2:二分求幂(一般)
代码:
#include<iostream>
#include<cstdio>
using namespace std; int main(){
int a,b;
int ans;
while(~scanf("%d%d",&a,&b)){
if(a==&&b==) break;
a=a%;//底数取余
ans=;
while(b>){//b==0时,所有的因子都已经相乘,循环结束。
if(b%==)//1.奇数时,多出来的一项提前放到ans里 2.b==1时,完成结果和底数的最后一次相乘
ans=(ans*a)%;//结果取余
a=(a*a)%;//二分操作
b=b/;//1.二分 2.b==1时,b/2=0,作为结束循环的条件
}
printf("%d\n",ans);
}
return ;
}
思路3:快速求幂(位操作)
Hint: 这不就是二分求幂么! 只不过改动了两个位操作。。。
b&1 可以判断是否为奇数,相当于 b%2==1
b=b>>1 表示b的二进制数向右移一位,相当于 b=b/2;
代码:
#include<iostream>
#include<cstdio>
using namespace std; int main(){
int a,b;
int ans;
while(~scanf("%d%d",&a,&b)){
if(a==&&b==) break;
a=a%;
ans=;
while(b>){
if(b&)//判断是否为奇数,相当于 if(b%2==1)
ans=(ans*a)%;
a=(a*a)%;
b=b>>;//二进制向右移一位,相当于 b=b/2;
}
printf("%d\n",ans);
}
return ;
}
HDU 2035 人见人爱A^B(二分求幂,快速求幂)的更多相关文章
- hdu 2035 人见人爱A^B
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2035 人见人爱A^B Description 求A^B的最后三位数表示的整数.说明:A^B的含义是“A ...
- HDU 2035.人见人爱A^B-快速幂
人见人爱A^B Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- HDU 2035 人见人爱A^B 分类: ACM 2015-06-22 23:54 9人阅读 评论(0) 收藏
人见人爱A^B Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- SPOJ 5152 Brute-force Algorithm EXTREME && HDU 3221 Brute-force Algorithm 快速幂,快速求斐波那契数列,欧拉函数,同余 难度:1
5152. Brute-force Algorithm EXTREME Problem code: BFALG Please click here to download a PDF version ...
- NYOJ--102--次方求模(快速求幂取模)
次方求模 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 求a的b次方对c取余的值 输入 第一行输入一个整数n表示测试数据的组数(n<100)每组测试只有一 ...
- 同余定理简单应用 - poj2769 - hdu 1021 - hdu 2035
同余问题 基本定理: 若a,b,c,d是整数,m是正整数, a = b(mod m), c = d(mod m) a+c = b+c(mod m) ac = bc(mod m) ax+cy = bx+ ...
- HDU 4549 M斐波那契数列(矩阵幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4549 题意:F[0]=a,F[1]=b,F[n]=F[n-1]*F[n-2]. 思路:手算一下可以发现 ...
- HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)
Recursive sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- HDU 5875 Function(RMQ-ST+二分)
Function Time Limit: 7000/3500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total ...
随机推荐
- Shell脚本之:变量
与编译型语言不同,shell脚本是一种解释型语言. 执行这类程序时,解释器(interpreter)需要读取我们编写的源代码(source code),并将其转换成目标代码(object code), ...
- 【Python】切片
处理Python的部分元素,称之为切片. 创建切片 指定要是用的第一个元素和最后一个元素的索引,与range()函数一样,Python在到达你指定的第二个索引前面的元素后停止. 先定义一个列表vege ...
- java:可变参数(转载)
http://12477787.blog.51cto.com/12467787/1887843 Java在1.5之后允许方法使用可变参数,可变参数的好处在于:它允许传递0个或者多个参数.比如原来有一段 ...
- CSS之BFC
BFC(Block Formatting Context,块格式上下文) 具有BFC特性的元素能够看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素. 在CSS3中.BFC叫做Flow ...
- TFT、LCD、OLED、LPTS、CRT等显示屏的区别
1.TFT TFT(Thin Film Transistor)是薄膜晶体管的缩写.TFT式显示屏是各类笔记本电脑和台式机上的主流显示设备,该类显示屏上的每个液晶像素点都是由集成在像素点后面的薄膜晶体管 ...
- ubuntu16.04 下安装opencv2.4.9
准备工作,安装环境 sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-nump ...
- python创建迅雷批量任务
其实不是真的创建了批量任务,而是用python创建一个文本文件,每行一个要下载的链接,然后打开迅雷,复制文本文件的内容,迅雷监测到剪切板变化,弹出下载全部链接的对话框~~ 实际情况是这样的,因为用py ...
- window+Jira+SQL Server
window下Jira+SQL Server部署+汉化+破解(亲测2018.5) 网上很多都是jira+mysql部署的文章,由于我现在有需求要用SQL Server数据库,因此就动手试了一下,参考网 ...
- 15 redis 之 aof恢复与rdb服务器间迁移
三:常见的问题 BGREWRITEAOF 后台进程重写AOF BGSAVE 后台保存rdb快照 SAVE 保存rdb快照 LASTSAVE 上次保存时间 Slaveof master-Host por ...
- MyBatis缓存介绍
一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 相同提供了一级缓存和二级缓存的支持 一级缓存: 基于PerpetualCache 的 HashMap本地缓存.其存储作用域为 Se ...