题意:求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(二分求幂,快速求幂)的更多相关文章

  1. hdu 2035 人见人爱A^B

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2035 人见人爱A^B Description 求A^B的最后三位数表示的整数.说明:A^B的含义是“A ...

  2. HDU 2035.人见人爱A^B-快速幂

    人见人爱A^B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  3. 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 ...

  4. 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 ...

  5. NYOJ--102--次方求模(快速求幂取模)

    次方求模 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 求a的b次方对c取余的值   输入 第一行输入一个整数n表示测试数据的组数(n<100)每组测试只有一 ...

  6. 同余定理简单应用 - 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+ ...

  7. 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]. 思路:手算一下可以发现 ...

  8. HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)

    Recursive sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  9. HDU 5875 Function(RMQ-ST+二分)

    Function Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total ...

随机推荐

  1. Android使用OKHttp3实现下载(断点续传、显示运行进度)

    OKHttp3是现在很流行的Android网络请求框架,那么怎样利用Android实现断点续传呢,今天写了个Demo尝试了一下,感觉还是有点意思 准备阶段 我们会用到OKHttp3来做网络请求,使用R ...

  2. 【LeetCode】Partition List ——链表排序问题

    [题目] Given a linked list and a value x, partition it such that all nodes less than x come before nod ...

  3. Allegro中解决鼠标放在走线上网络名、走线长度显示不出来的问题

    一些PCB设计者在使用allegro时,由于一些误操作 导致当鼠标放在走线(cline)和网络(net)上面时,软件没有显示该走线的所属网络,或者相关的长度信息.本人经过help文档发现,以下方法可以 ...

  4. 你的JVM还好吗?GC初步诊断

    你的JVM还好吗?GC初步诊断   阿飞的博客   JVM的GC机制绝对是很多程序员的福音,它让Java程序员省去了自己回收垃圾的烦恼.从而可以把大部分时间专注业务身上,大大提高了业务开发速度,让产品 ...

  5. 奇妙的go语言(開始篇)

    [ 声明:版权全部.欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 从前接触脚本语言不多,可是自从遇到go之后,就開始慢慢喜欢上了这个脚本语言.go语言是goog ...

  6. 2014年java软件project师面试题收集

    如果页面中于五个li标签.写个js使点击每个li返回他的index <!doctype html> <html> <head> <style> li{c ...

  7. Cocos2d-x 3.0final 终结者系列教程16-《微信飞机大战》实现

    看到cocos2d-x推出了3.1版本号,真是每月一次新版本号,速度. 另一个好消息就是http://cn.cocos2d-x.org/上线了,祝贺!啥时候把我的视频和教程放上去呢?!! . 视频下载 ...

  8. Java 并发随身记(一)之 Unsafe类

    最近在看Java并发相关的内容,需要自己整理整理,不然就生疏了.工作2年多,工作时一般注都是框架.消息这些内容,对基础内容比较忽视.闲话不说,既然是并发内容,首先先复习一下Unsafe的内容吧. Un ...

  9. 编译安装Heartbeat常见错误

    -----------那些需要升级包还有少包的错误就不写了---------- <b>1</b>. Reusable-Cluster-Components-glue-glue- ...

  10. 使用jdk中keytool生成证书

    -genkey 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥.私钥和证书 -alias 产生别名 -keystor ...