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  求 满足 n^(n!) %p =b  ( 0<=n<=m)  n 的个数

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  这个范围。且指数必定是phi(p)  因为 x = a!  ,a>phi(p)  --->  x%phi(p) = 0;

然后对 区间暴力。。

坑爹的地方是  m = 2^64-1  p = 1 b =0  时 ,ans = 2^64  溢出 特判。。。。


#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <cstring>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
 
#include <cstdlib>
#include <ctime>
#include <assert.h>
#include <queue>
#define REP(i,n) for(int i=0;i<n;i++)
#define TR(i,x) for(typeof(x.begin()) i=x.begin();i!=x.end();i++)
#define ALLL(x) x.begin(),x.end()
#define SORT(x) sort(ALLL(x))
#define CLEAR(x) memset(x,0,sizeof(x))
#define FILLL(x,c) memset(x,c,sizeof(x))
using namespace std;
 
const double EPS = 1e-8;

#define LL  unsigned long long 
#define pb push_back
const int maxn = 100001;
int p, b;
 LL m;
LL phi(LL a){
    LL ans = 1;
    for(LL i=2;i*i<=a;i++){
         if(a%i==0){
                ans *= i-1;
                a/=i;
                while(a%i==0){
                    ans *= i;
                    a/= i;
                }
         }
    }
    if(a > 1){
        ans*=a -1;
    }
    return ans;
}
LL fac[maxn];
LL pow(LL a,LL b,LL p){
    LL ret = 1;
    while(b){
        if(b&1){
            ret *= a;
            ret %= p;
        }
        a = a*a;
        a%= p;
        b= b>>1;
    }
    return ret;
}
void solve(){
     LL ret = 0;
     LL f= phi(p);
     fac[0] =1;
     for(LL i=1;i<=p;i++){
         
            fac[i] = fac[i-1]*i;
            fac[i]%= f;
     }
     for(LL i=1;i<=p;i++){
         if(i>m){
             if(0==b)ret ++ ;
             printf("%d\n",(int)ret);
             return;
         }
         if(pow(i,fac[i]+f,p)==b){
             ret ++;
         }
     }
     LL d = (m- p)/p;
     LL k = ( m - p)%p;
     LL ans = 0;
     for(LL i=1;i<=p;i++){
          if(pow(i,f,p) == b){
              if(i<=k){
                  ret ++;
              }
              ans ++;
          }
     }
     ret += ans*d;
      if(0==b)ret ++ ;
     cout << ret << endl;
}

int main(){
    int  t;
    cin >>t ;
    for(int i= 1;i<=t;i++){
        cin>>b>> p;
        cin >> m;
       // cout << m << " "<< p << " "<< b << endl; 
         if(m == 18446744073709551615llu && p == 1 && b == 0) {
            printf("Case #%d: 18446744073709551616\n", i);
        }else{
           printf("Case #%d: ",i);
           solve();
        }
        
    }
    return 0;
}



SAP 接口测试操作-业务顾问 业务顾问测试接口操作 阅读详情

相关推荐

【自用】吉林大学计算机系统结构第二章:缓存优化 曲冠南老师版 笔记

容量8KB,2的十三次方,块大小16B,一块用掉四位,剩余2的九次方是标志位,则有512行,每个元素8B,则一块两个元素,a数组150块,b数组152块,不出现容量失效。不管是否交换内容,在同一“伪相联”组中的两块都是用同一个索引得到的,因此失效率相同,即:失效率伪相联=失效率2路。伪相联cache的命中时间等于直接映象cache的命中时间加上伪相联查找过程中的命中时间*该命中所需的额外开销。(6) 由编译器控制的预取,硬件预取的替代方法,在编译时加入预取的指令,在数据被用到之前发出预取请求。

weixin_73587775的博客 1616

hdu4335 (指数循环节)

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

pi9nc的专栏 1010

SAP PP CSAP_MAT_BOM_MAINTAIN ECN 增加组件

SAP PP CSAP_MAT_BOM_MAINTAIN ECN 增加组件。

GAVIN 410

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

NRF24L01学习操作教程(二)——NRF实现一对一,一对多通讯

以上内容详细介绍了,使用NRF24L01实现1对1单向通讯、1对1双向通讯、1对多双向通讯。

Joseph Wen的博客 7389

电源新手别怕!手把手教你搞定Buck电路的环路补偿(附Type II/III补偿器参数计算)

本文为电源设计新手详细解析Buck电路环路补偿技术,重点介绍Type II和Type III补偿器的参数计算与设计方法。通过实例演示和实用技巧,帮助工程师快速掌握环路补偿原理,解决电源振荡、响应慢等问题,提升电路稳定性与性能。

weixin_30607029的博客 620

HDU - 4335 What is N? 欧拉降幂 + 循环节

传送门 题意:给定p, b(0<=b<p<=10^5)和m(1<=m<2^64),问有多少个n满足n^(n!)=b (mod p)。 思路:首先要知道这个结论: 当n!<Phi(C)时,此时我们暴力解决就可。 当n!大于phi(P)的时候,就需要用上面的降幂公式了。 方法还是暴力,n!%phi(p)会出现0,这是必然的,至少n>=phi(p)为0...

henucm的博客 389

高通410随身WiFi刷OpenWRT与Debian双系统一键集成方案

本文详细介绍高通410随身WiFi设备刷入OpenWRT与Debian双系统的一键集成方案。通过虎王工作室提供的一键刷机包,用户可轻松实现双系统部署,兼顾OpenWRT的网络功能与Debian的完整应用服务,适用于网络加速、服务器部署等多种场景,并提供了硬件资源分配与系统切换的实用指南。

docker7nomad的博客 1138

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的博客 207

YOLOv8模型压缩终极方案:LAMP剪枝实战,速度提升不掉点

一个庞大的模型虽然强大,但在实际部署,尤其是资源受限的边缘设备(如无人机、移动电话、嵌入式系统)上,却面临着严峻的挑战:高昂的内存占用、巨大的计算量以及随之而来的高延迟和高能耗。本教程从LAMP剪枝的深刻理论出发,详细解释了它如何通过最小化最坏情况下的L2失真,并借助巧妙的数学简化,最终推导出一种高效、无超参数、层自适应的剪枝策略。它如同为臃肿的模型进行一次精准的“瘦身手术”,通过移除网络中冗余或不重要的权重、神经元甚至整个结构,来显著降低模型的参数量和计算量(FLOPs),从而实现推理加速和资源节约。

LXY_LOVE36的博客 177

AUTOSAR NvM 实车故障深度剖析:车载存储问题快速定位与工程解决方案

软件配置与代码逻辑无问题时,排查底层驱动与ECU硬件,步骤如下:底层驱动排查:排查Fls/Eep驱动配置,是否适配目标MCU(如TC397、S32K),编程/擦除/读取时序是否合理;检查Fls/Eep驱动错误处理逻辑,是否未处理Flash编程失败、读取错误等异常;验证Flash高速编程模式是否启用,是否能提升写入/读取速度;排查MemIf层配置,是否正确对接NvM与Fls/Eep驱动,是否存在调度延迟。

getusushu的博客 78

HDU 4335 What is N? 多校4(数论)

转载请注明出处,谢谢 http://blog.youkuaiyun.com/ACM_cxlove?viewmode=contents           by---cxlove 题目:http://acm.hdu.edu.cn/showproblem.php?pid=4335 大意找出多少个N满足下式 范围如此之大啊。结果做法是暴力,囧。 要用到一个降幂公式:http://blog.csd

窝不是爱酱,喵~~~~ 2804

彻底解决tplink路由器无法访问部分https网站

彻底解决tplink无法访问部分https网站

renkai721的专栏 8766

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

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

数论 + 公式 - 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_34413357的博客 88

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

hdu - 4335 - What is N? - 数论

数论啊。http://acm.hdu.edu.cn/showproblem.php?pid=4335 给定bpm,求有几个n满足条件。 证明见http://hi.baidu.com/aekdycoin/item/e493adc9a7c0870bad092fd9 题目给定b,p,M 问 0 0。 有欧拉定理我们知道 n^(phi(p)) ≡ 1 (mod p) 但是这里要

Julyana_Lin_夜 1098

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

hdu4335(What is N?)(数论)

http://acm.hdu.edu.cn/showproblem.php?pid=4335 这是道数论的题目,会的人可以瞬秒。 (1)先要熟悉欧拉定理:gcd(n, p) = 1时,n^(phi(p)) ≡ 1 (mod p); (2)各种条件下的n: 1) n! < phi(p) ; 2)phi(p) <= n! < s!, s=m...

weixin_30724853的博客 107

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

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

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
上一篇: spoj 4491. Primes in GCD Table 莫比乌斯反演
下一篇: poj 1222 EXTENDED LIGHTS OUT高斯消元。
OceanLight
博客等级 码龄14年 21粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值