HDU - 4335 What is N? 欧拉函数

[高数 ] hdu 4335 Party All the Time /** hdu 4335 Party All the Time 数学计算题,枚举每段区间, 在每个区间上构造一元三次函数,求最小值。 注意n == 1时直接输出0 据说这个三分可以了,又据说可以O(1)的找到最优解的根。 */ #include #include #include using namespace std; #define N 50005 #de 阅读详情

题目:给定b,p,m,问 0 <= n <= m 中有多少个数满足 n^(n!) ≡ b (MOD p)

( 0<=b<p, 1<=p<=10^5, 1 <= m <=2^64 – 1 )

思路:要用到降幂公式,

a^n % p = a^(n % phi(p) + phi(p))  %p  其中n>= phi(p)
phi(p)为欧拉函数


本题分成三部分
第一部分  n! < phi(p)  这时直接计算n! ,phi(p)不会很大。
第二部分 n! >= phi(p) 但是 n! % phi(p) != 0   ,暴力计算,不会出现非常大的数
第三部分n! >= phi(p) 并且n! % phi(p) == 0  这一部分就转化为了  n^phi(p) % c    然后就变成了(n % p) ^ phi(p) % p   那么就成了一个长度为p的循环节了


代码:

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<iostream>
#include<algorithm>
#include<ctime>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<list>
#include<numeric>
using namespace std;
#define LL long long
#define ULL unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define mm(a,b) memset(a,b,sizeof(a))
#define PP puts("*********************");
template<class T> T f_abs(T a){ return a > 0 ? a : -a; }
template<class T> T gcd(T a, T b){ return b ? gcd(b, a%b) : a; }
template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}
// 0x3f3f3f3f3f3f3f3f

const int maxn=1e5+50;
ULL arr[maxn];
ULL eular(ULL n){
    ULL res=n;
    for(ULL i=2;i*i<=n;i++)
        if(n%i==0){
            res=res-res/i;
            while(n%i==0){
                n/=i;
            }
        }
    if(n>1)
        res=res-res/n;
    return res;
}
ULL pow_mod(ULL a,ULL b,ULL MOD){
    ULL res=1%MOD;
    while(b){
        if(b&1) res=res*a%MOD;
        a=a*a%MOD;
        b/=2;
    }
    return res;
}
int main(){

    int T,cas=0;
    ULL b,p,m;
    scanf("%d",&T);
    while(T--){
        scanf("%llu%llu%llu",&b,&p,&m);
        printf("Case #%d: ",++cas);
        if(p==1){
            if(m==18446744073709551615ULL)
                printf("18446744073709551616\n");
            else
                printf("%llu\n",m+1);
            continue;
        }
        ULL phi=eular(p);
        ULL ans=0,fac=1,i;
        for(i=0;i<=m&&fac<=phi;i++){
            if(pow_mod(i,fac,p)==b)
                ans++;
            fac=fac*(i+1);
        }
        if(fac!=0){
            fac%=phi;
            for(;i<=m&&fac;i++){
                if(pow_mod(i,fac+phi,p)==b)
                    ans++;
                fac=fac*(i+1)%phi;
            }
        }
        if(i<=m){
            ULL cnt=0;
            for(ULL j=0;j<p;j++){
                arr[j]=pow_mod(i+j,phi,p);
                if(arr[j]==b)
                    cnt++;
            }
            ULL num=(m-i+1)/p;
            ans+=num*cnt;
            ULL rem=(m-i+1)%p;
            for(ULL j=0;j<rem;j++)
                if(arr[j]==b)
                    ans++;
        }
        printf("%llu\n",ans);
    }
    return 0;
}


视觉SLAM十四讲--第13讲 实践:设计SLAM系统(最详细的代码调试运行步骤) 最详细的代码调试运行避坑说明,也包含了我自己对代码的理解,如有理解错误的地方,欢迎指正交流。 阅读详情

相关推荐

zabbix 监控EMC存储

经过搜索,找到了脚本地址,该项目应该是模板原作者创建的,该项目也有zabbix模板,和上面的应该是相同的,我用的是上面的模板。./unity_get_state.py --api_ip='X.X.X.X' --api_port='443' --api_user='zabbix' --api_password='PASSWORD' --storage_name="zabbix web前端配置的主机名" --discovery。修改权限,给zabbix用户执行权限,模板调用时以zabbix用户执行。

wangyfde的专栏 3753

HDU 4335 拓展欧拉定理

题意 传送门 HDU 4335 What is N? 题解 根据拓展欧拉定理,当指数部分 e≥phi(P)e\geq phi(P)e≥phi(P),则可以处理为 emod  phi(P)+phi(P)e\mod phi(P)+phi(P)emodphi(P)+phi(P)。对于底数部分,模 PPP 意义下只有 [0,P)[0,P)[0,P) 共 PPP 种可能;考虑模 PPP 意义下数为 xxx 的情况,对于 y=x+k×P,k≥1y=x+k\times P,k\geq 1y=x+k×P,k≥1,有 x+k

neweryyy的博客 206

HyperMesh 2025新功能尝鲜:用Volume Tetramesh一键生成工业级四面体网格

HyperMesh 2025推出的Volume Tetramesh功能,通过“体到体”的全新范式,实现了工业级四面体网格的一键生成。该功能利用Proximity与Curvature参数智能识别并加密几何特征,将工程师从繁琐的几何清理和表面网格划分中解放出来,在保证网格质量的同时,显著提升了前处理效率,尤其适用于发动机缸体等复杂模型的仿真分析。

weixin_29229055的博客 477

hdu4335 (指数循环节)

hdu4335 (指数循环节) 分类: 数论2013-03-01 16:20 63人阅读 评论(0) 收藏 举报 题目:What is N?   本题好坑人,居然还有那种情况。。。 [cpp] view plaincopy #include       #define LLU unsigned long long 

pi9nc的专栏 1010

正点原子ATK-LORA-01无线串口代码移植+STM32F103C8T6(标准库)

目录 一、ATK-LORA-01无线串口资料 二、代码移植 1.分析 (1)usart3(也可以是其他的串口)用于接收数据的串口 usart.h (2)time3(也可以是其他的定时器)用于时序的设置 (3)lora.c 三、演示 1.主机(发送方) (1)主机接线 (2)主机代码(发送方) (3)主机实物 插上无线串口通电即可发送​ 2.从机(接收方) (1)从机接线(LORA与主机相同) (2)从机代码(接收方) (3)从机实物 接上TTL和LORA并通电即...

m0_56942354的博客 8963

Unity 机械臂控制(二)——从碰撞检测到姿态解算:实现精准抓取

本文详细介绍了Unity中机械臂控制的实现方法,从碰撞检测到姿态解算,涵盖精准抓取的全流程。重点讲解了碰撞检测的分层处理、状态机设计、逆向运动学(IK)算法以及抓取稳定性优化等关键技术,并提供了实用的调试技巧和性能优化建议,帮助开发者实现高效的机械臂控制。

weixin_28693447的博客 304

hdu 4335 What is N? 数论

题意  给定  b,p,m  求 满足 n^(n!) %p =b  ( 0 m  的范围 2^64 -1   这里是个trick。。。 利用降幂的公式 。    a^x %p= a^( x%phi(p) + phi(p)) %p  就可以把指数降到 1 - p 这个范围内。 对于  kp+1   ~  (k+1)p    (k>1)这个范围中的n 可以 映射到 1 - p

OceanLight的专栏 827

电力电子技术进阶:从基础到实战的完整学习路径

本文系统阐述了电力电子技术从基础到实战的完整学习路径。首先解析了电力电子作为“电能魔术师”的核心作用,随后深入剖析了数学工具、电路电磁场与半导体器件三大基础支柱。文章重点讲解了DC-DC、DC-AC、AC-DC等核心变换拓扑,并探讨了从经典PID到现代模型预测控制(MPC)的控制策略。最后,分享了硬件设计、软件调试、电磁兼容(EMC)等实战经验与前沿趋势,为学习者提供了清晰的进阶指南。

weixin_29204205的博客 445

HDU - 4335 What is N?(扩展欧拉+指数循环节+细节处理)

传送门 首先根据欧拉降幂的公式得到nn!%φ(p)+φ(p)(mod  p)n^{n!\% \varphi(p)+\varphi(p)}(mod~~p)nn!%φ(p)+φ(p)(mod  p),那么代码整体分三种情况考虑: 当n!<φ(p)n!<\varphi(p)n!<φ(p)时,暴力判断i!%p==bi!\%p==bi!%p==b 当φ(p)!>n!≥φ(p)\varphi(p)! > n! \geq \varphi(p)φ(p

Happig的博客 208

蛋白质组学进阶指南 | (八)差异蛋白筛选与功能解析实战

本文是蛋白质组学差异蛋白筛选与功能解析的实战指南。详细讲解了如何利用R语言的limma包进行差异表达分析,结合FDR校正和差异倍数设定筛选关键蛋白,并通过火山图可视化结果。进一步介绍了使用clusterProfiler进行GO与KEGG功能富集分析,以及利用STRING数据库和Cytoscape构建蛋白互作网络以识别枢纽分子,最终串联分析形成可验证的生物学假说。

weixin_29208077的博客 737

UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position 0-4: ordinal not in range(128)

python3报错处理:UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-4: ordinal not in range(128) 一、报错场景 // 报错代码 Traceback (most recent call last): File "test_autoo3_2.py", line 214, in <module> main() File "test_autoo3_2.py",

浪里小飞侠的博客 4200

Hdu 4335 What is N? 欧拉函数降幂公式 + 循环节

a^n mod c= a^(n mod phi(c) + phi(c)) mod c (n >= phi(c) ) n! mod phi(c) = 0 n!的因子只需包含 phi(c) 因为 这题phi(mod) 不会太大 然后所有的n! mod phi(c) 都等于0 最后问题转化成有多少个nmod p = b; (a + b)^n = (a mod p + b mod p) ^ n (m

acblacktea的博客 1191

FISCO BCOS(八)——— 一键部署 WeBase

环境 版本 Java Oracle JDK 8 至 14 MySQL MySQL-5.6及以上 Python Python3.6及以上 PyMySQL 1、获取部署安装包: wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.4/webase-deploy.zip 2、解压安装包: unzip webase-deploy.zip 3、进入目录: c...

林中有神君 3606

HDU4335 What is N? [数论(欧拉函数)]

  这就是大神口中的简单题,我的数论简直烂到不行,这些数学出身的家伙何必出这些恶心的数学题来难为我们呢。。   用到一个公式 A^x%P=(A^(x%phi(P)+phi[P]))%P (x>=phi[C]),phi[C]表示欧拉函数。   注意条件是x>=phi[C],但这题的x是增长很快的,很快就能满足这个条件,所以x<phi[C]这部分暴力即可。   接着继续暴力求x...

weixin_33806509的博客 122

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

HDU-4335 What is N? 欧拉函数,欧拉定理

这题虽说解题报告中说的是简单题,但比赛中AC率以及提交量并不是很高,主要是数据范围太大,有点吓人,而且含有trick。 题目给定b,p,M 问 0 <= n <= M 中有多少个数满足 n^(n!) ≡ b (MOD p),并且可恶的是这里没有提到任何数的特殊性质,给定都只是限定在正整数且p>0。 有欧拉定理我们知道 n^(phi(p))≡ 1 (mod p) 但是这里要求...

weixin_30502157的博客 62

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Vue 3.6 Vapor Mode:编译时优化如何绕过虚拟DOM提升渲染性能

虚拟DOM是现代前端框架实现声明式UI的核心机制,它通过Diff算法计算最小化DOM操作,简化了复杂状态管理下的视图更新。然而,这种便利性在渲染大量静态内容时会产生不必要的性能开销。Vapor Mode作为Vue 3.6引入的编译时优化方案,通过静态分析和模板编译技术,为特定场景生成跳过虚拟DOM Diff的高效命令式代码。这项技术特别适合优化大数据表格、静态列表等低动态性内容的渲染性能,在保持Vue响应式系统完整性的同时,实现了编译时与运行时的协同优化。开发者可以通过渐进式启用的方式,在性能关键组件中应用

weixin_34075268的博客 356

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

HDU 4335What is N?2012多校联赛第四场(欧拉函数+坑数据)

What is N? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1030    Accepted Submission(s): 285 Problem Description   (This problem

布生气 1402

HDU4335-----What is N?-----数论

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4335 题目意思: 给你三个数b,p,m 问你满足0 解题思路: 主要考察 a^x % c = a^(x % phi(c) + phi(c))  %c  其中x>= phi(c) phi(c)为欧拉函数 第一部分  n! 第二部分 n! >= phi(c) 但

Bob Lee's Blog For CS 1153

HDU 4335 What is N?

Description   (This problem is really old&easy and any acmer who is good at math may solve it in second)    As we know, math is both intangible and specific. Today you are going to solve the follo

Occult 426

hdu 4335 What is N?

题目:4335 思路:对n!分成三部分,小于euler(mod)的部分,剩下的,根据能否整除euler(mod),分成循环节部分和剩余的部分(暴力) 参考了这里, here #include #include #include #include #include #include using namespace std; typedef unsigned __in

shiyuan的专栏 970

HDU 4335 What is N?

#include "iostream" #include "cstdio" #include "cmath" #include "algorithm" #include "map" #define LL unsigned __int64 using namespace std; //返回ab mod n LL mul_mod(LL a,LL b,LL c) { LL ret=0,tmp=

\*zyeric*/ 466

What is N? HDU - 4335

What is N? HDU - 4335 数论,欧拉函数降幂公式 题意 求 1 - M 中 n 中 nn!=b(&nbsp;mod&nbsp;m)nn!=b(&nbsp;mod&nbsp;m)n ^ {n !} = b ( \ mod\ m)的个数 分析 欧拉函数降幂公式 AB(mod&nbsp;m)=AB&nbsp;%&nbsp;ψ(m)+ψ(m)AB(mod&nbsp;...

海边拾贝,沧海一粟 373

HDU 4335 What is N? 简单数论

此题就是考察了一个简单的公式 a^x % c = a^(x % phi(c) + phi(c))  %c  其中x>= phi(c) phi(c)为欧拉函数 注意  欧拉函数的定义为 不超过n且与n互素的正整数的个数 而不是小于n 并且phi(1) =1  然后对于本题  分成三部分 第一部分  n! 第二部分 n! >= phi(c) 但是 n! % phi(c)

水 1688

数论 + 公式 - HDU 4335 What is N?

What is N? Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=4335 Mean: 给你三个数b、P、M,让你求有多少个n满足下式。 analyse: 看到数据被吓到了,没半点思路,后来看了解题报告,方法竟然是暴力! 当...

weixin_34125592的博客 80

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

题意: 询问有多少数\(n\)满足\(n^{n!}\equiv b\mod p \land\ n\in[1,M]\),数据范围:\(M\leq2^{64}-1,p\leq1e5\) 思路: 这题显然要用欧拉降幂,\(n!\)小于\(\varphi(p)\)的直接暴力算,\(n!\neq 0\mod \varphi(p)\)也直接暴力。 \(n!\equiv 0\mod \varphi(p...

weixin_30496431的博客 356
上一篇: HDU - 1695 GCD 莫比乌斯
下一篇: POJ - 2480 Longge's problem 欧拉函数
我不会额
博客等级 码龄11年 2粉丝 173原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值