题意:给出a, b, p, x,求有多少个n满足①n*a^n%p==b;②n<=x

思路:先要知道一个很简单的性质:a^n%p的值一定存在循环节(n=0就进入循环),且周期T一定是p-1的约数

然后就好做了,①暴力枚举a^i%p(i从0到p-1)算出每个余数ki,可以得到式子c*ki%p==b

②对于每个ki,用逆元求出c,c = b*(ki对p的逆元)

③如果存在一个n满足n*a^n%p==b,那么很显然n%(p-1)==i 并且n%p==c,最小的n可以用CRT求出

④然后就是一个简单的除法了,对于所有<=x的n的倍数都满足条件

复杂度O(plogp)

#include<stdio.h>
#define LL long long
LL k[1005555];
LL Pow(LL a, LL b, LL p)
{LL ans = 1;while(b){if(b%2)ans = ans*a%p;a = a*a%p;b /= 2;}return ans;
}
int main(void)
{LL a, b, p, x, i, xh, last, c, n, ans;scanf("%lld%lld%lld%lld", &a, &b, &p, &x);ans = 0, xh = p-1;for(i=0;i<=p-2;i++){k[i] = Pow(a, i, p);c = Pow(k[i], p-2, p)*b%p;n = ((p-1)*(p-1)*c+p*i)%(p*(p-1));ans += (x-n+p*(p-1))/(p*(p-1));}printf("%lld\n", ans);return 0;
}

Codeforces Round #460 (Div. 2): E. Congruence Equation(枚举)相关推荐

  1. [Codeforces]Codeforces Round #460 (Div. 2)

    Supermarket 找最便宜的就行 Solution Perfect Number 暴力做 Solution Seat Arrangement 注意当k=1时,横着和竖着是同一种方案 Soluti ...

  2. Codeforces Round #144 (Div. 2) B. Non-square Equation 数学解一元二次方程+分析

    http://codeforces.com/problemset/problem/233/B 题意: x2 + s(x)·x - n = 0,  给出n的值,求x的值,这里s(x)表示x各位数字的和. ...

  3. Codeforces Round #460 (Div. 2)

    A 签到 B 题意 定义:一个数(没有前缀0)的各个位数之和为10位"perfec"数,问第k个"perfect"数位多少(1<=k<=1e5) 分 ...

  4. Codeforces Round #460 (Div. 2): D. Substring(有向图)

    题意:给你一个有向图,每个节点都有一个字母,一条路径(可以重复经过点或边)的值为出现次数最多的字母出现次数,求出路径的最大值(如果无穷大输出-1) 思路:有环就是-1,有向图判环可以用DPS,也可以B ...

  5. CF1734E Codeforces Round #822 (Div. 2) Rectangular Congruence

    cf传送门 题意 构造一个矩阵 A A A,满足 其中所有 A [ i ] [ i ] A[i][i] A[i][i]已经给定 思路 考虑没有给定对角线的值,构造矩阵 A [ i ] [ j ] = ...

  6. Codeforces Round #636 (Div. 3) D.Constant Palindrome Sum

    Codeforces Round #636 (Div. 3) D.Constant Palindrome Sum 题目链接 You are given an array a consisting of ...

  7. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  8. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

  9. 构造 Codeforces Round #302 (Div. 2) B Sea and Islands

    题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...

最新文章

  1. jQurey 的选择器
  2. python获取命令行参数的方法
  3. Forth Week :快速上手一门编程语言
  4. 一个老外如何丑化中国程序员
  5. 机器学习实战(笔记)------------KNN算法
  6. 【数据结构与算法】二项队列与二叉堆的比较
  7. 我们异口同声说的shooow
  8. Magento教程 19:客户评论的审核与发布! (Pending Reviews)
  9. 【java】详解java多线程
  10. 注册规划师 计算机科学与技术,关于公布2018年度注册城乡规划师考试合格人员名单的通知...
  11. keli调试变量出现负值
  12. SpringMVC原理
  13. 数学-线性代数:线性代数
  14. ThreeJS 实现等值线效果
  15. QUIC成为了HTTP/3的标准传输协议!
  16. pcb焊接的一些技巧
  17. 数字转中文大写= 1234= 一千二百三十四
  18. pc端高德地图获取当前位置
  19. Centos 安装OpenStack
  20. 研究生语音识别课程作业记录(一) 非特定人孤立词识别

热门文章

  1. python能做什么工作-学完Python我们可以做什么工作?
  2. 单片机如何在一数据包前加标识呢_单挑Google面试官,一上来就问我Chrome底层原理和HTTP协议(万字长文)...
  3. MongoDB创建集合及创建文档(非常详细哦~)
  4. H5搜索页调起软键盘
  5. 【堆】Leetcode692:前k个高频单词
  6. 【计算机网络笔记】计算机网络定义分类
  7. ★Python爬虫 ※ 入门详解
  8. 二叉树求到某一个节点路径
  9. python访问注册表_Python 操作注册表
  10. 搭建 Harbor 1.10.6 高可用集群