What is N?

Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=4335


Mean:

给你三个数b、P、M,让你求有多少个n满足下式。

analyse:

看到数据被吓到了,没半点思路,后来看了解题报告,方法竟然是暴力!

当然暴力是有条件的。

有这样一个公式:

A^x = A^(x % Phi(C) + Phi(C)) (mod C) (x>=Phi(C))

这个公式的具体证明原来在aekdycoin的百度空间有,但是随着百度空间被转移(百度作死,流失了好多优质的文章==),这篇文章的完整版也流失了。

我们就当这个公式是定理吧!

当n!<Phi(C)时,此时我们暴力解决就可。
 
当n!大于phi(P)的时候,就需要用上面的降幂公式了。
 
方法还是暴力,n!%phi(p)会出现0,这是必然的,至少n>=phi(p)为0,
 
那么(n+1)!%phi(p)也为0,这便出现了重复,转变为n^(phi(p))%p==b的问题了。
 
固定了指数,根据鸽巢原理,余数是循环的,那么只要找出p个的结果,之后通过循环节求解便可以了。
 
Trick:当P为1的时候,b为0,这时候答案是m+1,不过m可能为2^64-1,如果加1的话就会溢出,巨坑。

Time complexity: O(N)

Source code:

;
     ; )
           ;
                 )
                 ) ;
     ;
     ) ;
     )
           );
                 ;
           ; ;
           ));
                 ; )); ;
}/

数论 + 公式 - HDU 4335 What is N?的更多相关文章

  1. 【Luogu】P3327约数个数和(莫比乌斯反演+神奇数论公式)

    题目链接 真TM是神奇数论公式. 注明:如无特殊说明我们的除法都是整数除法,向下取整的那种. 首先有个定理叫$d(ij)=\sum\limits_{i|n}{}\sum\limits_{j|m}{}( ...

  2. 【中国剩余定理】【容斥原理】【快速乘法】【数论】HDU 5768 Lucky7

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5768 题目大意: T组数据,求L~R中满足:1.是7的倍数,2.对n个素数有 %pi!=ai  的数 ...

  3. hdu 4335 What is N?

    此题用到的公式:a^b%c=a^(b%phi(c)+phi(c))%c (b>=phi(c)). 1.当n!<phi(p)时,直接暴力掉: 2.当n!>=phi(p) &&a ...

  4. HDU 4335 Contest 4

    利用降幂公式..呃,还是自己去搜题解吧.知道降幂公式后,就不难了. #include <iostream> #include <cstdio> #include <alg ...

  5. 推公式 HDU 2552

    T 给你2个值 求另外一个 需要推一下 tan(a+b)=(tan(a)+tan(b))/(1-tan(a)*tan(b)); 等式左右取tan tan(atan(a))=a 1/s=tan(...) ...

  6. 【数论】HDU 4143 A Simple Problem

    题目内容 给出一个正整数\(n\),找到最小的正整数\(x\),使之能找到一个整数\(y\),满足\(y^2=n+x^2\). 输入格式 第一行是数据组数\(T\),每组数据有一个整数\(n\). 输 ...

  7. HDU 4335 What is N?(指数循环节)题解

    题意: 询问有多少数\(n\)满足\(n^{n!}\equiv b\mod p \land\ n\in[1,M]\),数据范围:\(M\leq2^{64}-1,p\leq1e5\) 思路: 这题显然要 ...

  8. fzu1759:数论高次幂降幂

    题目大意: 求 a^b mod c的值..但是b会非常大(10^1000000) 所以需要用到一个数论公式: A^x = A^(x % Phi(C) + Phi(C)) (mod C) 证明见ac大神 ...

  9. FUzhou 1607 Greedy division---因子个数问题。

    Problem 1607 Greedy division http://acm.fzu.edu.cn/problem.php?pid=1607 Accept: 402    Submit: 1463T ...

随机推荐

  1. IOS-UITableView入门(3)

    UITableView本身自带了(增.删)编辑功能: 1.仅仅要调用UITableView的编辑代码 就会进入编辑状态: [self.tableView setEditing:!self.tableV ...

  2. sql分页性能测试结果

    --方案一: declare @d datetime set @d = getdate() ID from Info order by ID) order by ID select [not in方法 ...

  3. iOS 图片比例缩放

    方法 //Resize image - (UIImage *)resizeImage:(UIImage *)image withQuality:(CGInterpolationQuality)qual ...

  4. Java打包生成exe(使用exe4j和inno setup)

    Java打包生成exe 生成jar 先使用eclipse生成可执行的jar[可执行的jar包含内容更全面,包括指定主类的.mf] Exe4j的使用 一定要可执行jar进行打包. Project typ ...

  5. log4cplus的安装与使用初步

    1. 简单介绍 log4cplus是C++编写的开源的日志系统,The purpose of this project is to port the excellentLog for Java (lo ...

  6. 算法笔记_026:折半查找(Java)

    目录 1 问题描述 2 解决方案 2.1 递归法 2.2 迭代法 1 问题描述 首先,了解一下何为折半查找?此处,借用<算法设计与分析基础>第三版上一段文字介绍: 2 解决方案 2.1 递 ...

  7. Emitting signals

    Objects created from a QtCore.QObject can emit signals. In the following example we will see how we ...

  8. 【Linux】df命令

    用途 df命令主要用于检查Linux服务器的文件系统的磁盘空间占用情况 全称 df的全称为:Disk Free 参数 -a :全部文件系统列表 -h :方便阅读显示 -H :等于"-h&qu ...

  9. linux之进程管理详解

    |-进程管理        进程常用命令        |- w查看当前系统信息        |- ps进程查看命令        |- kill终止进程        |- 一个存放内存中的特殊目 ...

  10. STS(Spring Tool Suite)创建maven项目

    右键菜单选择新建->maven项目 自己创建存放配置文件需要使用的maven文件夹