首页 > 其他分享 >CF#460 E Congruence Equation

CF#460 E Congruence Equation

时间:2022-09-29 15:23:32浏览次数:40  
标签:int cdot Equation Congruence CF pmod ans LL equiv

求满足

\[n\cdot a^n\equiv b\pmod{p} \]

的 \(n(1<n<x)\) 的个数,令\(n=(p-1)t+k (0\le k <q-1)\),那么

\[n\equiv b\cdot a^{-k} \pmod{p} \]

那么枚举 \(k\),求满足条件的 \(t\) 的个数。

\begin{align}
(k-t)\equiv b\cdot a^{-k}\pmod{p}
\end{align}

\[(k-b\cdot a^{-k})\equiv t\pmod{p} \]

\[ (p-1)(k-b\cdot a^{-k})+k\equiv (p-1)t+k\pmod{p} \]

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;

int a, b, p;
LL x;

inline int pow(int a, int b, int p){
	LL ans = 1, base = a;
	while (b){
		if (b & 1){
			(ans *= base) %= p;
		}
		(base *= base) %= p;
		b >>= 1;
	}
	return (int)ans;
}

inline int inv(int x, int p){
	return pow(x, p - 2, p);
}

int main(){
	scanf("%d%d%d%I64d", &a, &b, &p, &x);
	LL ans = 0;
	for (int i = 1; i <= p - 1; i++){
		int now = (LL)b * inv((LL)pow(a, i, p), p) % p;
		LL first = (LL)(p - 1) * ((i - now + p) % p) + i;
		if (first > x) continue;
		ans += (x - first) / ((LL)p * (p - 1)) + 1;
	}
	printf("%I64d\n", ans);
}

标签:int,cdot,Equation,Congruence,CF,pmod,ans,LL,equiv
From: https://www.cnblogs.com/shinidetiehanhan/p/16741674.html

相关文章

  • 题解【CF1632E1 Distance Tree (easy version)】
    CF1632E1DistanceTree(easyversion&hardversion)解题报告。不一定更好的阅读体验。E2没有地方交了所以就交到E1了。震撼挺大的一道题,钦定\(1\)为根。先......
  • 990. Satisfiability of Equality Equations
    Youaregivenanarrayofstrings equations thatrepresentrelationshipsbetweenvariableswhereeachstring equations[i] isoflength 4 andtakesoneof......
  • CF1182E 名字太长不想打 题解
    题解区都是用矩阵直接算封闭形式中\(f_1,f_2,f_3\)的系数的,这里给个更偏MO风格的做法。首先先想办法用\(f_x\cdotk(x)\)代\(f_x\)以消掉\(c^{2x+6}\)这个不好......
  • CF1526E Oolimry and Suffix Array 组合数学
    看起来是后缀数组,但是看到求方案数就是dp,计数啥的了问满足后缀数组的字符串方案有多少观察样例,发现rk相邻的所在位置,字母要么是相等,要么是比其大大的话条件直接满足了,相......
  • CF1693E
    考虑到一个结论就是\(a_i\)会变成两种操作变成的数的最小值。看着就很对啊,感性理解就好了。我们从大到小考虑每一个值。当访问一个值时,我们将其所有位置都标记成“未......
  • CF1693F
    首先可以假定整个序列\(c_0\gec_1\),否则我们把\(0\)变成\(1\),\(1\)变成\(0\),并翻转序列。新序列答案与原序列相同。结论:仅操作\(c_0=c_1\)的区间的最小答案和原......
  • CF1730B Meeting on the Line
    题目链接https://codeforces.com/contest/1730/problem/B题意简述\(x\)轴上有\(n\)个人,他们的位置分别是\(x_i\),现在他们想要聚会,需要找一个位置(可以为小数),......
  • 【CF468D】 Tree
    CF468DTree以树的重心为根i和pi不能在同一个子树中贪心求出方案点击查看代码</details>#include<set>#include<stdio.h>#include<string.h>#include<alg......
  • CF468D Tree
    CF468DTree以树的重心为根i和pi不能在同一个子树中贪心求出方案点击查看代码</details>#include<set>#include<stdio.h>#include<string.h>#include<alg......
  • 题解【CF1363F Rotating Substrings】
    CF1363FRotatingSubstrings*2600解题报告。不一定更好的阅读体验。感觉楼上的DP状态设计与DP转移方程的联系是说不通的,有些地方没有讲明白,所以这篇题解就详细......