次方求模
来源:互联网 发布:域名投资 知乎 编辑:程序博客网 时间:2024/06/06 05:22
次方求模
描述 求a的b次方对c取余的值
- 输入
- 第一行输入一个整数n表示测试数据的组数(n<100)
每组测试只有一行,其中有三个正整数a,b,c(1=<a,b,c<=1000000000)
- 输出
- 输出a的b次方对c取余之后的结果
- 样例输入
32 3 53 100 1011 12345 12345
- 样例输出
3110481
这段说明是借鉴高手的:
求a的b次方对c取余的值
- 输入
- 第一行输入一个整数n表示测试数据的组数(n<100)
每组测试只有一行,其中有三个正整数a,b,c(1=<a,b,c<=1000000000) - 输出
- 输出a的b次方对c取余之后的结果
- 样例输入
32 3 53 100 1011 12345 12345
- 样例输出
3110481
有了这个公式,求解问题就简单了,n的p次方很容易拆分为几个数相乘的形式。其中采用二分法拆分较为简单高效。
我的代码:
#include<iostream>using namespace std;int main(){long long t,sum,a,b,c,n;cin >> n;while (n--){cin >> a >> b >> c ;for (t=a,sum=1;b;){if (b&1){sum*=t;sum%=c;}b>>=1;t=t%c*t%c;sum%=c;}cout << sum << endl;}return 0;}
标程:
#include<iostream>using namespace std;template<class IntType>inline IntType ModPow(IntType m,IntType n,IntType p) //m的n次方模p{ if (n==1) return m%p; IntType tmp=ModPow(m,n>>1,p); return (tmp*tmp%p)*((n%2?m:1)%p)%p;}int main(){int n;long long a,b,c;cin>>n;while(n--){cin>>a>>b>>c;cout<<ModPow(a,b,c)<<endl;}}
0 0
- 次方求模
- 高次方求模
- NYOJ - 次方求模
- 次方求模
- 次方求模
- 高次方求模
- acm-次方求模
- 次方求模
- 次方求模
- 次方求模
- 次方求模
- 次方求模
- 102 次方求模
- 次方求模
- 次方求模
- NYOJ-次方求模
- 高次方求模
- nyoj102次方求模
- 我推荐的一些C\C++书籍
- 一起学android之利用回调函数onCreateDialog实现加载对话框(23)
- Sicily 1916. Toy
- linux调度器源码分析 - 运行(四)
- OJ 169 Majority Element
- 次方求模
- 编写一个函数实现n^k,使用递归实现
- eclipse 代码提示后面的百分比是什么意思?
- 1185 特殊排序
- 不依赖glibc库的hello world的学习
- Sicily 1094. Cube
- linux调度器源码分析 - 新进程加入(三)
- 使用json-lib进行Java和JSON之间的转换
- Sicily 1915. Steal the Treasure