题意:求A^B mod C,其中(1<=A,C<=1000000000,1<=B<=10^1000000).

思路:

在有些题目中我们需要对指数进行降幂处理才能计算。比如计算

其中

这里由于很大,所以需要进行降幂。那么实际上有如下降幂公式

有了上述公式,很多题目就可以迎刃而解了。

摘自ACdreamer博客

代码:

#include <iostream>
#include <string.h>
#include <stdio.h>using namespace std;
const int N=1000005;
typedef long long ll;char str[N];int phi(int n)
{int rea = n;for(int i=2; i*i<=n; i++){if(n % i == 0){rea = rea - rea / i;while(n % i == 0) n /= i;}}if(n > 1)rea = rea - rea / n;return rea;
}ll multi(ll a,ll b,ll m)
{ll ans = 0;a %= m;while(b){if(b & 1){ans = (ans + a) % m;b--;}b >>= 1;a = (a + a) % m;}return ans;
}ll quick_mod(ll a,ll b,ll m)
{ll ans = 1;a %= m;while(b){if(b & 1){ans = multi(ans,a,m);b--;}b >>= 1;a = multi(a,a,m);}return ans;
}void Solve(ll a,char str[],ll c)
{ll len = strlen(str);ll ans = 0;ll p = phi(c);if(len <= 15){for(int i=0; i<len; i++)ans = ans * 10 + str[i] - '0';}else{for(int i=0; i<len; i++){ans = ans * 10 + str[i] - '0';ans %= p;}ans += p;}printf("%I64d\n",quick_mod(a,ans,c));
}int main()
{ll a,c;while(~scanf("%I64d%s%I64d",&a,str,&c))Solve(a,str,c);return 0;
}

转载于:https://www.cnblogs.com/simplekinght/p/6683324.html

FUZ 1759 Super A^B mod C (指数循环节/模板)相关推荐

  1. fzu - Problem 1759 Super A^B mod C

    题解:A^B%C =  A^(B%φ(c)+φ(c))%C; 知道这个公式,接下来怎么做,你懂得~~~ #include<stdio.h> #include<math.h> # ...

  2. 【FZU - 1759】Super A^B mod C (数论,快速幂,快速乘,欧拉降幂,指数循环节,模板)

    题干: Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,C<=1000000000,1&l ...

  3. 求 A^B mod C. (1=A,C=1000000000,1=B=10^1000000).(fzu1759,hdu3221,hdu4335)

    题目:http://acm.fzu.edu.cn/problem.php?pid=1759 也算是快速幂的一题了,只不过这里的指数B特别大.需要用到一个公式: A^x = A^(x % Phi(C) ...

  4. 【牛客 -330E 】Applese 涂颜色(费马小定理,超级快速幂)

    题干: 精通程序设计的 Applese 叕写了一个游戏. 在这个游戏中,有一个 n 行 m 列的方阵.现在它要为这个方阵涂上黑白两种颜色.规定左右相邻两格的颜色不能相同.请你帮它统计一下有多少种涂色的 ...

  5. 三个重要的同余式——威尔逊定理、费马小定理、欧拉定理 + 求幂大法的证明

    一.威尔逊定理 若p为质数,则 p|(p-1)!+1 亦:(p-1)! ≡ p-1 ≡ -1(mod p) 例题: HDU 2973 YAPTCHA (威尔逊定理及其逆定理) 解题报告见http:// ...

  6. Applese 涂颜色

    https://ac.nowcoder.com/acm/contest/330/E Python版本一 题解: std 一个比较显然的结论是,对于每一列,有 2n 种涂色方法. 我们可以发现,当确定了 ...

  7. 数论杂谈(欧拉定理与费马小定理结论与应用)

    文章目录 欧拉定理: 欧拉定理性质: 扩展欧拉定理: 费马小定理: 指数循环节 费马大定理 逆元: 例题 原根 定义: 原根存在条件 例题 快速幂 代码 矩阵快速幂 原理: 代码: 欧拉定理: aφ( ...

  8. c语言定义int 输出4386,C语言 · 矩阵乘法

    问题描述 输入两个矩阵,分别是m*s,s*n大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s,n(均不超过200). 接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j ...

  9. 数学:(一直很浮躁)

    数论 算术基本定理 唯一质因数分解定理及其推论(LL 范围内的数字,质因数个数最多不会超过20个,INT 范围内数字,质因数个数最多不会超过10个) 威尔逊定理 威尔逊定理给出了判定一个自然数是否为素 ...

最新文章

  1. knn的python代码_Python代码实现KNN算法
  2. JVM Class详解之一
  3. 电脑卡顿不流畅怎么解决_电脑用久了卡怎么办?学会这四招解决你的电脑卡顿问题...
  4. 单链表的按位置插入和删除
  5. Python——文件操作
  6. gRPC创建Java RPC服务
  7. hadoop最新稳定版本dkhadoop版本选择介绍
  8. Git基础知识与常用命令
  9. Win8.1激活方法
  10. 破解wifi密码最简单教程 就三步
  11. 2008-2019年高等学校科技统计资料汇编
  12. 分辨率单位及换算详解
  13. linux如何使用磁盘阵列卡,Ubuntu 上创建常用磁盘阵列
  14. RandomAccessSource not opened
  15. 威联通 php升级,威联通折腾篇十七:Docker 安装的 NextCloud 升级、备份及恢复
  16. java面试逻辑思维题目_逻辑思维面试题-java后端面试
  17. Python动态画图小代码(Turtle Graphics)
  18. 大疆机甲大师教育机器人Python开发:中文命名变量初尝试
  19. 正大国际期货:什么是黄金保证金交易?黄金保证金交易包含哪些要点?
  20. CSS学习笔记(内边距~文字在盒子里的垂直居中)

热门文章

  1. 安装宝塔面板并建立网络使用外网访问
  2. Prometheus+Grafana监控安装及配置JVM实现企业微信告警
  3. 【期末复习】技术经济学(南邮储成祥)
  4. 我的 5 年 Android 学习之路,那些年一起踩过的坑
  5. 使用SPSS进行曲线估算分析
  6. 网易七鱼“大闹”客服行业,真能一举定乾坤?
  7. 【工具】Excel表格数据不能编辑
  8. 依赖倒转原则与里氏代换原则
  9. vue3项目源码汇集
  10. vue下载pdf为空问题解决