求大数的n次方对m取模(欧拉降幂)
博主链接
#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;const int INF = 0x3f3f3f3f;
const int MAXN = 1e5 + 10;
const int MOD = 1e9 + 7;
char s[MAXN];long long phi(long long x)
{long long ret = x;for (int i = 2; i * i <= x; ++i)if (x % i == 0){ret -= ret / i;while (x % i == 0)x /= i;}if (x > 1)ret -= ret / x;return ret;
}
ll mpow(ll a, ll n, ll m) //a ^ n % m
{ll t = 1;while (n){if (n & 1)t = (t * a) % m;a = (a * a) % m, n >>= 1;}return t;
}
int main()
{
#ifdef LOCAL//freopen("C:/input.txt", "r", stdin);
#endifint T;cin >> T;while (T--){ll n = 0, p = phi(MOD);scanf("%s", s);for (int i = 0; s[i]; i++)n = (n * 10 + s[i] - '0') % p;n += p - 1;ll ans = mpow(2, n, MOD);cout << ans << endl;}return 0;
}
求大数的n次方对m取模(欧拉降幂)相关推荐
- 求x的y次方对z取模(x^y)mod z:蒙格马利快速幂模算法
原理: 积的取余等于取余的积的取余. 参考: https://blog.csdn.net/DBC_121/article/details/77646508 [推荐] https://blog.csdn ...
- a的b次方对p取模 a乘b对p取模 快速幂
思路:对b用二进制表示,分开操作防止溢出. 对b用二进制表示: b = b 0 ∗ 2 0 + b 1 ∗ 2 1 + b 2 ∗ 2 2 + . . . + b n ∗ 2 n , b i = 0 ...
- 常见的几种求模运算(mod)——加减乘、除的小费马定理、指数的欧拉降幂
在C/C++中,+,-的优先级低于/,*,%,而/,*,%优先级一样,所以就从左到右 1.乘法 我们在做题的时候,遇到(a*b)%c,由于可能a*b先计算的话,会超精度,所以我们可以这么转化 (a*b ...
- 【2021牛客寒假第五场】C-比武招亲(下)欧拉降幂+多项式求逆预处理伯努利数计算等幂求和
[2021牛客寒假第五场]C-比武招亲(下)欧拉降幂+多项式求逆预处理伯努利数计算等幂求和 前置技能 题意 思路 Code(715MS) 传送门: https://ac.nowcoder.com/ac ...
- 大数取模运算,快速幂取模运算
1.快速幂取模 http://www.cnblogs.com/yinger/archive/2011/06/08/2075043.html 快速幂取模就是在O(logn)内求出a^n mod b的值. ...
- 负数的 %求余和取模
1.求余和取模是不同的 2.'%' 在C/C++,Java等语言中意为 求余 ,在python 中意为 取模 3.a%b = c 求余: c的符号和a一致 取模:c的符号和b一致 比如,一个小李子: ...
- 取模运算性质_求余、取模运算在RTOS中计算优先级的理解
uCOS3中的部分源码: /* 置位优先级表中相应的位 */ void OS_PrioInsert (OS_PRIO prio) { CPU_DATA bit; CPU_DATA bit_nbr; O ...
- 【转】数学与编程——求余、取模运算及其性质
一.求余运算(Remainder) (参考维基百科: http://zh.wikipedia.org/wiki/余数 http://en.wikipedia.org/wiki/Remainder h ...
- 取模运算性质_数学与编程——求余、取模运算及其性质 | 学步园
一.求余运算(Remainder) http://zh.wikipedia.org/wiki/同余) Euclidean division:Given two integers a and b, wi ...
最新文章
- P1203 [USACO1.1]坏掉的项链Broken Necklace
- codevs1245 最小的N个和
- 并发测试mysql_Jmeter性能测试系列——结果分析与报告输出
- 关于内存管理/set/get方法
- C++ sizeof()
- Spock Primer 翻译
- 学习C ,常见的误解
- SpringMVC 环境搭建
- VirtualBox 虚拟机迁移-克隆
- ethtool 命令输出的注意点--网卡参数
- MyBatis学习(三)--MyBatis配置文件简介
- Docker-----Cgroup资源配置详细教程,图文并茂
- 基于php的企业公文流转审批系统
- Invalid injected android support version ‘202.7660.26.42.7322048‘, expected to be of the form ‘w.x.y
- 学会可视化大屏布局技巧,让领导都赞不绝口
- NMS(非极大值抑制)的来龙去脉,简单明了
- python解法:【PAT520砖石争霸赛】7-2真的恭喜你(10)
- Python数据分析实例,利用Pandas建立流域三层蒸发和蓄满产流模型
- npm(了解)+Babel转码器+模块化+webpack打包
- android图片压缩不失真实战