hdu 2035 (快速乘方)快速乘方取模
来源:互联网 发布:c语言图片 编辑:程序博客网 时间:2024/05/02 02:35
人见人爱A^B
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 35507 Accepted Submission(s): 24132
Problem Description
求A^B的最后三位数表示的整数。
说明:A^B的含义是“A的B次方”
说明:A^B的含义是“A的B次方”
Input
输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。
Output
对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。
Sample Input
2 312 66789 100000 0
Sample Output
89841
二分法快速乘方
#include<stdio.h>#define LL long longLL quickPower(LL a,LL b){ LL ans=1; if(b==0) return 1; if(b<0) return 0; while(b) { if(b&1) ans*=a; a*=a; b>>=1; } return ans;}int main(){ LL n,m; //freopen("in.txt","r",stdin); while(scanf("%I64d%I64d",&n,&m)!=EOF) { printf("%I64d\n",quickPower(n,m)); } return 0;}
最简单粗暴的方法:
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int main(){ //freopen("in.txt","r",stdin); int n,m; while(scanf("%d%d",&n,&m),n+m!=0) { int ans=1; for(int i=0;i<m;i++){ ans*=n; ans%=1000; } printf("%d\n",ans); } return 0;}
二分法优化:
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define LL long longLL mod(LL a,LL n,LL m){ LL temp=a,ans=1; while(n) { if(n&1) ans=ans*temp%m; temp=temp*temp%m; n>>=1; } return ans;}int main(){ //freopen("in.txt","r",stdin); int n,m; while(scanf("%d%d",&n,&m),n+m!=0) { printf("%lld\n",mod(n,m,1000)); } return 0;}
0 0
- hdu 2035 (快速乘方)快速乘方取模
- 求乘方取模(快速幂+慢速乘法模板)
- 快速乘方
- HDU 2035-人见人爱A^B(乘方取模)
- hdu 5187 快速乘方 快速乘法
- 快速幂+矩阵乘方
- 快速幂乘法,乘方
- HDU 2035-人见人爱A^B(乘方取模)
- 快速计算乘方的算法
- 大数运算(加减乘除,取模,乘方)
- 乘方取模标准代码
- 蓝桥杯 算法训练 矩阵乘方(矩阵快速幂取模)
- 乘方取模计算(模幂计算)
- Codevs 5208 求乘方取模
- POJ 3761 Bubble Sort (乘方取模)
- 求大数乘方的前n位数字(对数加快速幂)
- 如何快速判断一个数是不是 2 的乘方?
- java实现RSA大数乘方取模运算
- 4-1、java.util.AbstractList
- Complexities
- 根据json里的某个key对json数据进行分组
- java对象和类
- iOS 【模仿App 获取app素材】
- hdu 2035 (快速乘方)快速乘方取模
- DLL的64位与32位
- Lightoj 1067
- poj2549 Sumsets
- Android 简单聊天软件开发
- 二叉树的遍历
- [codevs] 线段树练习4
- python字符串替换
- (三)maven和ant比较