NC23046 华华教月月做数学

题目

题目描述

找到了心仪的小姐姐月月后,华华很高兴的和她聊着天。然而月月的作业很多,不能继续陪华华聊天了。华华为了尽快和月月继续聊天,就提出帮她做一部分作业。

月月的其中一项作业是:给定正整数 \(A\) 、\(B\) 、\(P\) ,求 \(A^B\mod P\) 的值。华华觉得这实在是毫无意义,所以决定写一个程序来做。但是华华并不会写程序,所以这个任务就交给你了。

因为月月的作业很多,所以有T组询问。

输入描述

第一行一个正整数 \(T\) 表示测试数据组数。

接下来 \(T\) 行,每行三个正整数 \(A\) 、\(B\) 、\(P\) ,含义如上文。

输出描述

输出 \(T\) 行,每行一个非负整数表示答案。

示例1

输入

2
2 5 10
57284938291657 827493857294857 384729583748273

输出

2
18924650048745

备注

\(1\le T\le10^3\) ,\(1\le A,B,P\le10^{18}\)

题解

思路

知识点:快速幂,龟速乘。

一眼快速幂。注意到,模数是超 \(int\) 的,乘法以后会超 \(long \ long\) 因此用龟速乘(或者 \(\_ \_ int128\) QWQ)。

时间复杂度 \(O(logB)\)

空间复杂度 \(O(1)\)

代码

#include <bits/stdc++.h>
#define ll long long using namespace std; ll qmul(ll a, ll b, ll p) {
ll ans = 0;
while (b) {
if (b & 1) ans = (ans + a) % p;
b >>= 1;
a = (a << 1) % p;
}
return ans;
} ll qpow(ll a, ll k, ll p) {
ll ans = 1;
while (k) {
if (k & 1) ans = qmul(ans, a, p);
k >>= 1;
a = qmul(a, a, p);
}
return ans;
} bool solve() {
ll a, b, p;
cin >> a >> b >> p;
cout << qpow(a, b, p) << '\n';
return true;
} int main() {
std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int t = 1;
cin >> t;
while (t--) {
if (!solve()) cout << -1 << '\n';
}
return 0;
}

最新文章

  1. UI控件(UIAlertController)
  2. 366. Find Leaves of Binary Tree
  3. 基于DDS的任意波形发生器
  4. EDIUS和会声会影的区别
  5. Vector示例一,二
  6. 【转】lua Date和Time
  7. OpenJudge/Poj 1251 丛林中的路/Jungle Roads
  8. OpenStack及其构成简介1
  9. 使用 VirtualBox 虚拟机在电脑上运行 Android 4.0 系统,让电脑瞬间变安卓平板
  10. HtmlWebpackPlugin实现资源的自定义插入
  11. 邓_thinkphp口试
  12. [c/c++] programming之路(25)、字符串(六)——memset,Unicode及宽字符,strset
  13. mybatis学习系列二
  14. MoreWindows 微软认证专家博客目录(白话算法,C++ STL,windows编程)
  15. GDI+ 库
  16. MVC 视图不使用模板页的两种方法
  17. 例说Linux内核链表(一)
  18. UI5-文档-4.35-Responsiveness
  19. 对其中的一个特点将NABC的分析结果
  20. 一款基于jquery超炫的弹出层提示消息

热门文章

  1. 集合——Collection接口,List接口
  2. linux常用理论(一)
  3. Springmvc01-什么是Springmvc
  4. Hadoop3.x 三大组件详解
  5. C# 一维数组如何快速实现数组元素的数据类型的转换?
  6. [AcWing 788] 逆序对的数量
  7. 自己在ubuntu16.04 上用的软件和配置
  8. 关于Spring-JDBC测试类的简单封装
  9. Idea使用入门
  10. Linux应急响应入门——入侵排查