题目链接:

http://codeforces.com/problemset/problem/919/E

题意:

让你求满足 \(na^n\equiv b \pmod p\) 的 \(n\) 的个数。

\(2 ≤ p ≤ 10^{6} + 3, 1 ≤ a, b < p, 1 ≤ x ≤ 10^{12}\).

题解:

因为:

$n \mod p $的循环节是 \(p\)

\(a^{n} \mod p\)的循环节是 \(p-1\)。(费马小定理)

所以: \(na^n \mod p​\)的循环节为 \(p*(p-1)\)。

因为 \(p\)是质数。

假设: \(n \mod p \equiv i, a^n\mod p\equiv a^j\).

\(a^n \mod p \equiv i\) ----①

$a^n\mod p\equiv a^j $ ----②

\(na^n\equiv b \pmod p\) ----③

可以得到: \(i \times a^j \equiv b \pmod p\).

我们现在枚举的\(a^n\) 中的 \(n\) 为 \(j\) , 满足 \(n \times a^n\ mod\ p\ = \ b\) 的 \(n\) 为 \(i\).

列出同余方程:

$i \equiv b*a^{-j} \pmod p $ ---①

\(i\equiv j \pmod {p-1}\) ---②

利用 \(CRT\) 可以解出 :\(i=(p-1)^2ba^{-j}+pj\) ,其中 \(a^{-j}\) 是$ a^{j}$ 在 $\mod p $意义下的逆元。

因为在所有 \(<=x\) 的 \(i\) 的倍数都满足条件,除法统计一下即可。

复杂度:\(O(p*logp)\)

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll; ll qpower(ll a,ll b, ll mod)
{
ll ans = 1;
while(b){
if(b&1) ans = ans * a % mod;
b>>=1;
a=a*a%mod;
}
return ans;
}
ll a,b,mod,x;
int main(int argc, char const *argv[]) {
std::cin >> a >> b >> mod >> x;
ll ans = 0;
for(int i = 1;i <= mod-1;i++) {
ll c = qpower( qpower(a, i , mod) , mod - 2, mod) * b % mod;
ll n = ((mod-1) * (mod-1) * c + mod * i) % (mod * (mod-1));
ans += ( x / (mod * (mod-1)) ) + (x % (mod * (mod-1)) >= n );
}
std::cout << ans << '\n';
return 0;
}

最新文章

  1. 【腾讯Bugly干货分享】H5 视频直播那些事
  2. ORACLE工作原理小结
  3. C6000代码层面优化(一)
  4. 如何用JavaScript探测CSS动画是否已经完成
  5. [Linux 性能检测工具]FREE
  6. ! cocos2d 同一个sprite的触控问题
  7. win7登入使用的是临时档案解决方法
  8. 51nod 最大子矩阵和(动态规划)
  9. trackr: An AngularJS app with a Java 8 backend – Part III
  10. 让java程序在后台一直执行(例如putty关闭后后台程序继续运行)
  11. C读写配置文件
  12. vs2017 在win10下安装后开始运行asp.net core 项目时出错
  13. 一个Login页面全面了解session与cookie
  14. C++ 原来 const 中所使用的函数 必须 全都具有 const 才行
  15. 安装scrapy时遇到的问题
  16. bzoj千题计划269:bzoj2655: calc (拉格朗日插值)
  17. android view的多种移动方式(测试集合)
  18. 3D打印机切片与控制软件
  19. C#.NET常见问题(FAQ)-如何设置控件水平对齐,垂直对齐
  20. PHP高并发和大流量的解决方案

热门文章

  1. 00075_BigInteger
  2. POJ 1014 Dividing 背包
  3. Xposed框架之函数Hook学习
  4. Onvif开发之客户端鉴权获取参数篇
  5. HTTP基础知识整理
  6. 4.cocos场景和层的调用
  7. Regularization —— linear regression
  8. [log4j]Slf4j的包冲突
  9. CSUOJ 1554 SG Value
  10. understand软件使用教程(转)