牛客网 牛客小白月赛12 B.华华教月月做数学-A^B mod P-快速幂+快速乘
2024-10-20 15:56:50
链接:https://ac.nowcoder.com/acm/contest/392/B
来源:牛客网
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
找到了心仪的小姐姐月月后,华华很高兴的和她聊着天。然而月月的作业很多,不能继续陪华华聊天了。华华为了尽快和月月继续聊天,就提出帮她做一部分作业。
月月的其中一项作业是:给定正整数A、B、P,求ABmodPABmodP的值。华华觉得这实在是毫无意义,所以决定写一个程序来做。但是华华并不会写程序,所以这个任务就交给你了。
因为月月的作业很多,所以有T组询问。
月月的其中一项作业是:给定正整数A、B、P,求ABmodPABmodP的值。华华觉得这实在是毫无意义,所以决定写一个程序来做。但是华华并不会写程序,所以这个任务就交给你了。
因为月月的作业很多,所以有T组询问。
输入描述:
第一行一个正整数T表示测试数据组数。
接下来T行,每行三个正整数A、B、P,含义如上文。
输出描述:
输出T行,每行一个非负整数表示答案。
备注:
1≤T≤1031≤T≤103,1≤A,B,P≤1018
水一波博客。
题意很好理解,
因为数据范围比较大,超了ll,所以用快速幂+快速乘。
就是在快速幂的基础上,将快速幂中的乘法拆成加法求余,类似快速幂的快速乘。
代码:
//B
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+; ll mul(ll a,ll b,ll p)
{
ll ans=;
while(b)
{
if(b&) ans=(ans+a)%p;
a=(a+a)%p;
b=b>>;
}
return ans;
} ll Pow(ll a,ll b,ll p)
{
ll result=;
ll base=a%p;
while(b){
if(b&) result=mul(result,base,p)%p;
base=mul(base,base,p)%p;
b=b>>;
}
return result;
} int main()
{
int t;
cin>>t;
while(t--){
ll a,b,mod;
cin>>a>>b>>mod;
cout<<Pow(a,b,mod)<<endl;
}
}
。。。
最新文章
- 【转】段错误调试神器 - Core Dump详解
- struts1的一些基本用法和操作
- js-格式化数字保留两位小数-带千分符
- 关于在EXCEL中输入01-01-01被转换为2001/1/1怎么解决
- maven库文件所在目录
- bzoj1566
- 更好的使用chrome
- 【C语言探索之旅】 第二部分第五课:预处理
- Angular CLI 安装和使用
- Linux tar命令之--exclude参数 排除指定的文件或目录
- mysql ----BaseDao工具类
- 开源工具 DotnetRSA 快速生成和转换RSA秘钥
- MT【290】内外圆求三角最值
- POJ 1979 Heavy Transportation (kruskal)
- spring拦截器中使用spring的自动注入
- Xcode No account for team ";";. Add a new account in the Accounts preference pane or verify that your accounts have valid credentials.
- 实际体验Span<;T>; 的惊人表现
- CCF关于NOI省选申诉的说明
- Git本地上传到服务器
- spring MVC 如何接收前台传入的JSON对象数组