二分求幂 1
2016-02-04 16:55
190 查看
/*
二分求幂
题目1441:人见人爱 A ^ B
题目描述:
求A^B的最后三位数表示的整数。说明:A^B的含义是“A的B次方”
输入:
输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。
输出:
对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。
样例输入:
2 3
12 6
6789 10000
0 0
样例输出:
8
984
1
*/
/*
因为A^B的数字过大,不能求出具体数字后,再确定后三位,只能在处理过程中处理,只保存后三位
*/
#include <stdio.h>
int main(){
int a,b;
while(scanf("%d%d",&a,&b) != EOF){
if(a==0 && b==0) break;
int ans = 1;//保存最终结果,初始值为1
while(b != 0){//转换2进制
if(b%2 == 1){
ans *= a;
ans %= 1000;//保存后三位
}
b /= 2;
a *= a;//a代表权重
a %= 1000;//求a的后三位
}
printf("%d\n",ans);
}
return 0;
}
二分求幂
题目1441:人见人爱 A ^ B
题目描述:
求A^B的最后三位数表示的整数。说明:A^B的含义是“A的B次方”
输入:
输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。
输出:
对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。
样例输入:
2 3
12 6
6789 10000
0 0
样例输出:
8
984
1
*/
/*
因为A^B的数字过大,不能求出具体数字后,再确定后三位,只能在处理过程中处理,只保存后三位
*/
#include <stdio.h>
int main(){
int a,b;
while(scanf("%d%d",&a,&b) != EOF){
if(a==0 && b==0) break;
int ans = 1;//保存最终结果,初始值为1
while(b != 0){//转换2进制
if(b%2 == 1){
ans *= a;
ans %= 1000;//保存后三位
}
b /= 2;
a *= a;//a代表权重
a %= 1000;//求a的后三位
}
printf("%d\n",ans);
}
return 0;
}
相关文章推荐
- Linux常用20条命令
- shell批量操作循环
- 安装zabbix界面第三步Configure DB connection 过不去
- Python爬虫基础
- 如何设置项目encoding为utf-8
- mapreduce原理
- 学习STM32(2)-IO-AFIO(复用功能IO和调试配置)
- log4j.properties文件不放在根目录下时该怎么加载
- 辅助工具:支付宝“咻一咻” 无脑极速教程---2016.2.4 【只支持安卓Root手机(苹果:反正你玩的是寂寞)】
- Xcode清缓存
- centos7的一些变化,firewalld替换iptables、systemctl 替换service
- tar 命令解析 .tar .gz .bz2
- java中静态属性和和静态方法的继承问题 以及多态的实质
- 内核态和用户态的区别
- YZR要脑补!
- 关于禁止Android scrollView 因内容变化而自动滚动
- Yii2 自定义独立验证器
- sbt发布assembly解决jar包冲突问题 deduplicate: different file contents found in the following
- pxe装机方式
- linux解压