链接:https://ac.nowcoder.com/acm/contest/392/B
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

找到了心仪的小姐姐月月后,华华很高兴的和她聊着天。然而月月的作业很多,不能继续陪华华聊天了。华华为了尽快和月月继续聊天,就提出帮她做一部分作业。
月月的其中一项作业是:给定正整数A、B、P,求ABmodPABmodP的值。华华觉得这实在是毫无意义,所以决定写一个程序来做。但是华华并不会写程序,所以这个任务就交给你了。
因为月月的作业很多,所以有T组询问。

输入描述:

第一行一个正整数T表示测试数据组数。
接下来T行,每行三个正整数A、B、P,含义如上文。

输出描述:

输出T行,每行一个非负整数表示答案。
示例1

输入

复制

2
2 5 10
57284938291657 827493857294857 384729583748273

输出

复制

2
18924650048745

备注:

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;
}
}

。。。

最新文章

  1. 【转】段错误调试神器 - Core Dump详解
  2. struts1的一些基本用法和操作
  3. js-格式化数字保留两位小数-带千分符
  4. 关于在EXCEL中输入01-01-01被转换为2001/1/1怎么解决
  5. maven库文件所在目录
  6. bzoj1566
  7. 更好的使用chrome
  8. 【C语言探索之旅】 第二部分第五课:预处理
  9. Angular CLI 安装和使用
  10. Linux tar命令之--exclude参数 排除指定的文件或目录
  11. mysql ----BaseDao工具类
  12. 开源工具 DotnetRSA 快速生成和转换RSA秘钥
  13. MT【290】内外圆求三角最值
  14. POJ 1979 Heavy Transportation (kruskal)
  15. spring拦截器中使用spring的自动注入
  16. Xcode No account for team &quot;&quot;. Add a new account in the Accounts preference pane or verify that your accounts have valid credentials.
  17. 实际体验Span&lt;T&gt; 的惊人表现
  18. CCF关于NOI省选申诉的说明
  19. Git本地上传到服务器
  20. spring MVC 如何接收前台传入的JSON对象数组

热门文章

  1. vue 拦截器
  2. spring boot 2.0.3+spring cloud (Finchley)8、微服务监控Spring Boot Admin
  3. 使用HttpClient4来构建Spring RestTemplate
  4. parseInt
  5. 【leetcode 简单】第三十三题 验证回文串
  6. Redis数据类型之散列(hash)
  7. 数据库与sql注入的相关知识
  8. dlmalloc(一)【转】
  9. 判断Selenium加载完成
  10. iOS通知中心