cf 460 E. Congruence Equation 数学题
2024-08-25 20:54:45
cf 460 E. Congruence Equation 数学题
题意:
给出一个x 计算<=x的满足下列的条件正整数n的个数
\(p是素数,2 ≤ p ≤ 10^{6} + 3, 1 ≤ a, b < p, 1 ≤ x ≤ 10^{12}\)
思路:
题目中存在两个循环节 \(n % p\) 和 \(a ^ n % p\), 循环节分别为\(p,p-1\)
我们枚举\(i = n\ (mod)\ (p - 1)\)
可以得到两个方程
\[n\ \equiv\ i\ mod\ (p-1)
\]
\]
\[n \equiv \frac{b}{a ^ i}\ mod\ p
\]
\]
令$mm = \frac{b}{a ^ i} $
设 $$n = p * k + mm , n = (p - 1) * q + i $$
于是\(p * k + mm = p * q - q + i\)
在模p意义下可以得到
\(q \equiv (i - mm)\ (mod) p\)
然后就可以根据限制条件计算出有多少个满足条件的q 即答案了
#include<bits/stdc++.h>
#define LL long long
using namespace std;
LL qpow(LL x,LL y,LL mod){
x %= mod;
LL ans = 1;
while(y){
if(y & 1) ans = ans * x % mod;
x = x * x % mod;
y >>= 1;
}
return ans;
}
int main(){
LL a,b,p,X;
cin>>a>>b>>p>>X;
LL x,y,m = b,inva = qpow(a, p - 2,p);
LL ans = 0;
for(int i = 0;i < p - 1;i++){
LL mm = (i - m + p) % p;
LL R = (floor)((1.0 * (X - i) / (p -1) - mm)/p) ;
LL L = mm / p;
// for(int j = L;j <= R;j++) cout<<(p * j + mm) * (p - 1) + i<<" ";
m = m * inva % p;
ans += R - L + 1;
}
cout<<ans<<endl;
return 0;
}
最新文章
- iOS 之APP上架
- 查询oracle数据库,返回的数据是乱码。 PL/SQL正常。
- SQL Server 自定义字符串分割函数
- USB mass storage协议
- js解决通过json传来的timestamp类型时间的显示问题
- Apache Kafka系列(四) 多线程Consumer方案
- 【转】控制台,终端,tty,shell等概念的区别
- C++版 - 剑指offer面试题38:数字在已排序数组中出现的次数
- MVC 微信开发获取用户OpenID
- git 的详解
- R语言RODBC数据库操作
- 不同路径II(一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。)
- Vue动态新增对象属性
- 后台开发 - DPDK引发的图谱
- Android Studio 之 打包生成的 apk 安装包装到手机上闪退
- iOS提交审核:您的 App 正在使用广告标识符 (IDFA)
- 在线js调试工具JSbin、jsFiddle
- Enter键登录
- redis连接池 jedis-2.9.0.jar+commons-pool2-2.4.2.jar
- Java Spring-JdbcTemplate
热门文章
- Python3.5+selenium(11)脚本模块化&;参数化
- 聊聊Bug引发事故该不该追求责任
- lesson 23 one man&#39;s meat is another man&#39;s poison
- Java开发工程师(Web方向) - 04.Spring框架 - 第4章.数据访问
- [JSON].remove( keyPath )
- flex布局笔记
- 数据库Mysql的学习(一)-启动和进入
- Machine Learning笔记整理 ------ (四)线性模型
- Notes of the scrum meeting before publishing(12.19)
- android 出现Make sure the Cursor is initialized correctly before accessing data from it