洛谷 2155[SDOI2008]沙拉公主的困惑 题解(数论)

RML2016.10a (CNN、LSTM、CNN-LSTM、CNN-LSTM-Multi-head-attention, TensorFlow) RML2016.10a (CNN、LSTM、CNN-LSTM、CNN-LSTM-Multi-head-attention, TensorFlow) 包含所有数据和代码,支持一键运行(jupyter) 阅读详情

原题链接:
洛谷:点我QωQ
bzoj:点我QωQ
(常数过不去。。。用另一种写法过的)

题意简述

给定 n , m n,m n,m,保证 n > = m n>=m n>=m,求 [ 1 , n ! ] [1,n!] [1,n!]中与 m ! m! m!互质的有多少。

数据

输入

一行两个正整数 n , m ( n , m &lt; = 1 e 7 ) n,m(n,m&lt;=1e7) n,m(n,m<=1e7)。

输出

如题意简述

思路

我们会发现,对于一个数 p p p,用一个 01 01 01序列表示一个序列和 p p p互质的情况, 0 0 0表示不互质, 1 1 1表示互质。那么, [ 1 , p ] [1,p] [1,p]的这个 01 01 01序列和 [ p + 1 , 2 p ] [p+1,2p] [p+1,2p], [ 2 p + 1 , 3 p ] , ⋯ [ ( n − 1 ) p + 1 , n p ] [2p+1,3p],\cdots [(n-1)p+1,np] [2p+1,3p],⋯[(n−1)p+1,np]是一样的。

不信?我们试试。如 p = 9 p=9 p=9。那么, [ 1 , p ] [1,p] [1,p]的这个 01 01 01序列应该等于
1   1   0   1   1   0   1   1   0 1\ 1\ 0\ 1\ 1\ 0\ 1\ 1\ 0 1 1 0 1 1 0 1 1 0
会发现, [ p + 1 , 2 p ] [p+1,2p] [p+1,2p]的这个 01 01 01序列也等于:
1   1   0   1   1   0   1   1   0 1\ 1\ 0\ 1\ 1\ 0\ 1\ 1\ 0 1 1 0 1 1 0 1 1 0

所以,设 [ 1 , p ] [1,p] [1,p]中和 p p p互质的有 k k k个,那么 [ 1 , n p ] [1,np] [1,np]中和 p p p互质的就有 n k nk nk个。回到这个题中,我们只要求出 [ 1 , m ! ] [1,m!] [1,m!]中多少个和 m ! m! m!互质,然后用它 ∗ n ! m ! *\frac{n!}{m!} ∗m!n!​即珂。但是,如何求 [ 1 , m ! ] [1,m!] [1,m!]中多少个和 m ! m! m!互质(即 ϕ ( m ! ) \phi(m!) ϕ(m!))呢?

我们知道一个式子: ϕ ( x ) = x ∗ ∏ i = 1 k p i − 1 p i \phi(x)=x*\prod\limits_{i=1}^{k}\frac{p_i-1}{p_i} ϕ(x)=x∗i=1∏k​pi​pi​−1​,其中 p 1 , p 2 . . . p k p_1,p_2...p_k p1​,p2​...pk​是 x x x的所有质因数。即 x x x的 ϕ \phi ϕ值为: x ∗ x 所 有 质 因 数 − 1 x 所 有 质 因 数 x*\frac{x所有质因数-1}{x所有质因数} x∗x所有质因数x所有质因数−1​。而 m ! m! m!的所有质因数就是 1   m 1~m 1 m中的所有质数。也就是说,我们的答案就是
n ! m ! ∗ ∏ i = 1 k p k − 1 p k \frac{n!}{m!}*\prod\limits_{i=1}^{k}\frac{p_k-1}{p_k} m!n!​∗i=1∏k​pk​pk​−1​。(其中 p k p_k pk​是 m m m以内最大的质数)

所以,我们预处理好所有的质数,然后设 p r e [ i ] pre[i] pre[i]为前 i i i个质数的 p − 1 p \frac{p-1}{p} pp−1​值之积(即前缀积)。每次询问的时候, u p p e r _ b o u n d upper\_bound upper_bound一下 m m m的位置,乘一下即珂。当然我们也要求出阶乘(也是前缀积的思想)。会发现,那个 p r e pre pre数组在算的时候要涉及到除法,两个阶乘也要除,那没问题,跑一下逆元就珂以了。

代码:

#include<bits/stdc++.h>
using namespace std;
namespace Flandle_Scarlet
{
    #define N 10000005
    #define int long long
    int t,r;
    int n,m;

    int primes[N];bool notp[N];//质数
    int inv[N];//逆元
    int fact[N];//阶乘
    int pre[N];//前缀积
    int qpow(int a,int b,int m)//快速幂
    {
        int r=1;
        while(b)
        {
            if (b&1) r=r*a%m;
            a=a*a%m,b>>=1;
        }
        return r;
    }
    void Init()//O(n)=O(1e7)
    {
        int n=10000000;
        int& cnt=primes[0];
        notp[1]=1;
        for(int i=2;i<=n;++i)
        {
            if (!notp[i])
            {
                primes[++cnt]=i;
            }
            for(int j=1;j<=cnt and i*primes[j]<=n;++j)
            {
                int u=primes[j];
                notp[i*u]=1;
                if (i%u==0) break;
            }
        }//处理质数

        for(int i=1;i<=primes[0];++i)
        {
            inv[i]=qpow(primes[i],r-2,r);
        }//处理质数的逆元

        fact[0]=1;
        for(int i=1;i<=n;++i)
        {
            fact[i]=fact[i-1]*i%r;
        }//处理阶乘

        pre[0]=1;
        for(int i=1;i<=primes[0];++i)
        {
            int u=primes[i];
            pre[i]=pre[i-1]*(u-1)%r*inv[i]%r;
        }//处理pre
    }

    void Solve()
    {
        int ans=fact[n];
        int pos=upper_bound(primes+1,primes+primes[0]+1,m)-primes-1;
        //upper_bound之后-1是最后一个<=某个数的位置
        //lower_bound是第一个<=某个数的位置,所以不能用lower_bound
        ans*=pre[pos];ans%=r;
        printf("%lld\n",ans);
    }
    void Main()
    {
        if (0)
        {
            freopen("","r",stdin);
            freopen("","w",stdout);
        }
        scanf("%lld%lld",&t,&r);
        Init();
        while(t--)
        {
            scanf("%lld%lld",&n,&m);
            Solve();
        }
    }
    #undef N //10000005
    #undef int //long long
};
main()
{
    Flandle_Scarlet::Main();
    return 0;
}

回到总题解界面

【数字IC基础】DFT(Design For Test)可测性设计 阅读详情

相关推荐

LabVIEW与MySQL实时数据存储:传感器采集与数据库同步实践

本文详细介绍了如何将LabVIEW与MySQL结合,实现传感器数据的实时采集与高效存储。通过设计合理的数据库表结构、配置LabVIEW数据库连接工具包,并编写核心的采集与存储VI,构建了稳定可靠的数据链路。文章重点分享了批量插入、连接管理、时间同步等关键优化技巧与避坑指南,帮助工程师应对工业监控、环境监测等场景下的实时数据同步挑战。

weixin_29281915的博客 262

[BZOJ 2186][SDOI 2008] 莎拉公主的困惑

2186: [Sdoi2008]沙拉公主的困惑 Time Limit:10 SecMemory Limit:259 MBSubmit:4519Solved:1560[Submit][Status][Discuss] Description   大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与...

weixin_30606461的博客 211

L298N电机驱动模块的接线使用与代码实现

#include "iostm8s208mb.h" #define u8 uint8_t #define u16 uint16_t #define u32 uint32_t typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned long uint32_t; // 关于LED灯的宏定义 #define LED2 PI_ODR_ODR2 //输出量 #define LE

Clichong 13万+

【题解】SDOI2008莎拉公主的困惑

挺有趣的恩:洛谷P2155 在纸上打打草稿,写出n!个数,从先往后,遇到不互质的就筛掉——发现一个奇妙的性质!:筛掉的次数、顺序好像是周期性出现的呢~ 而且更加妙妙的是,好像还是m!一轮..那么因为n!一定能被m!整除,所以问题转变为:(n!\m! - 有多少个循环节)*(φ(m))。 接下来,φ(m) = m!*(1 - 1/p1)*(1 - 1/p2)...任务就只剩下打出阶乘表&amp...

weixin_30505043的博客 219

记录Nvidia AGX Orin的配置日常(二)设置上电自动开机和远程桌面

因为要拿AGX作为机器人的主控板,所以需要给他设置一下通电后无需按电源键就自动开机,然后再配置一下远程桌面。

AutomaticForever的博客 1361

别再到处找DEM了!手把手教你免费下载90米、30米、12.5米全球高程数据(附国内网盘链接)

本文详细介绍了如何免费获取全球90米(SRTM3)、30米(ASTER GDEM)和12.5米(ALOS)高精度DEM数据,并提供了国内网盘链接以绕过国际平台访问障碍。通过对比不同数据源的特点和适用场景,帮助用户根据项目需求选择最合适的DEM数据,同时分享了数据处理和质量提升的实用技巧,实现从数据获取到应用的无缝衔接。

weixin_28725949的博客 671

欧拉函数&莫比乌斯反演

近几天做了几道有关反演的问题,再次集合一下吧。 1、[BZOJ 2301]HAOI2011 Problem b 2、[BZOJ 2440]中山市选2011 完全平方数 3、gcd 4、[BZOJ 2186]SDOI2008 莎拉公主的困惑 5、[BZOJ 3529]SDOI2014 数表 (蒟蒻自认为反演一类的的题目重要的就是记住两个重要的公式:1、sigma(mu[i] ,

Zeyu_King的专栏 2205

数字信号的艺术演绎:用FPGA+DAC实现音乐合成器的核心原理

本文深入探讨了如何利用FPGA和DAC技术实现数字音乐合成器的核心原理,涵盖DDS架构、多波形合成、MIDI协议解析及动态包络控制等关键技术。通过详细的Verilog代码示例和硬件实现方案,展示了数字信号处理在音乐合成中的艺术演绎,为电子音乐创作提供了强大的硬件支持。

weixin_28256233的博客 390

【bzoj2186】[Sdoi2008]沙拉公主的困惑 【线性筛】【容斥原理】

题目链接 题意 求(∑n!i=1(gcd(i,m!)==1))&nbsp;mod&nbsp;p(∑i=1n!(gcd(i,m!)==1))&nbsp;mod&nbsp;p(\sum_{i=1}^{n!}(gcd(i,m!)==1))\ mod\ p 题解 orz yeh dark♂佬 我们可以fa♂现,设m!=ap11ap22...apmkm!=a1p1a2p2...akpmm!=a_1...

2016gdgzoi471 947

大模型LangChain面试题及参考答案(上)

明确的输入输出类型:函数参数需包含类型注解,返回值需定义清晰的数据结构(如JSON格式),便于LLM理解参数含义和调用方式。工具描述:通过文档字符串或独立的描述对象(如Tool类)说明函数的功能、参数用途及调用场景,供LLM判断是否需要调用。示例:定义一个计算两个数之和的工具函数@tool"""计算两个整数的和。参数:- a:第一个整数- b:第二个整数调用场景:当用户需要进行数值加法计算时使用。"""除了内置的。

大模型大数据攻城狮的专栏 1139

【产品经理修炼之道】- 优惠券系统从入门到精通(二)

在电商平台中,优惠券的使用场景与频次都很高。那么如何做好一个优惠券系统呢?本文总结了相关流程和设计思路,希望对你有所帮助。上一篇与大家分享了架构中的前端应用、生命周期、优惠券管理中OpenAPI 、基础系统,今天继续与大家分享架构图中优惠券模板部分。

xiaoli8748的专栏 1292

[SDOI2008]沙拉公主的困惑

题面 传送门 Sol 题目要求\(\sum_{i=1}^{n!}[gcd(i, m!)==1]\) 设\(N=n!,M=m!\),莫比乌斯反演一波 就变成了\(\sum_{d|M}\mu(d)\frac{N}{d}\) 因为\(M|N\)所以\(d|N\) 而有个定理\(\sum_{d|M}\frac{\mu(d)}{d}=\frac{\varphi(M)}{M}\) 那么就是求\(\frac{\...

weixin_34344403的博客 136

MATLAB - Gazebo 联合仿真 —— 使用 UR10 机械臂检测和采摘水果

本示例演示如何在 Gazebo 物理模拟器中设置 Universal Robotics UR10 机械臂和仿真环境。您需要配置一个机器人从树上摘苹果的仿真环境。本示例演示如何利用这些工具箱,使用 Universal Robotics UR10 机械手模拟机器人检测并从树上摘取苹果。Robotics System Toolbox™ - 在 Simulink® 和 Gazebo 中对机械手进行建模、规划和模拟。Navigation Toolbox™ - 生成三维环境的占用图。

机器人控制与仿真应用 4182

luogu P2155 [SDOI2008]沙拉公主的困惑

背景: 写一下最近做的题目。 题目传送门: https://www.luogu.org/problem/P2155 题意: 求[1,n!][1,n!][1,n!]内与m!m!m!互质的数的个数。 思路: 这个转化还是比较妙的。 考虑[1,m!][1,m!][1,m!]内与m!m!m!互质的数的个数,显然答案为ϕ(m!)\phi(m!)ϕ(m!)。 考虑(m!,n!](m!,n!](m!...

zsyz_ZZY的博客 288

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

洛谷 P2155 [SDOI2008] 沙拉公主的困惑

P2155 [SDOI2008] 沙拉公主的困惑(线性筛,逆元) 题目入口 题解 我们知道 gcd(m!+k,m!)=gcd(k,m!)gcd(m!+k,m!)=gcd(k,m!)gcd(m!+k,m!)=gcd(k,m!) 若k>m!k>m!k>m! 不妨令k=m!+ck=m!+ck=m!+c 于是gcd(k,m!)=gcd(c,m!)gcd(k,m!)=gcd(c,m!)gcd(k,m!)=gcd(c,m!) 我们目标求1−n!1-n!1−n!中gcd(i,m!)==1gcd(i,m!

qq_40052678的博客 231

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

洛谷-2155 [SDOI2008]沙拉公主的困惑

题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票。房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的数量。现在,请你帮助沙拉公主解决这个问题,由于可能张数非常大,你只需计算出对R取模后的答案即可。R是一个质数。 输入格式 第一行为两个整数T,R。R<=10^9+10,T<=10000,...

mkopvec的博客 159

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

bzoj-2186,P2155 [SDOI2008]沙拉公主的困惑

欧拉函数

Ajwallet 445

洛谷 P2155 [SDOI2008]沙拉公主的困惑 解题报告

P2155 [SDOI2008]沙拉公主的困惑 题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为\(1\)到\(N\)的阶乘,但是,政府只发行编号与\(M!\)互质的钞票。房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的数量。现在,请你帮助沙拉公主解决这个问题,由于可能张数非常大,你只需计算出对\(R\)取模后的答案即可。\(R\)是一个质数。 ...

weixin_30909575的博客 213

洛谷 P2155 [SDOI2008]沙拉公主的困惑【欧拉定理】

莫名水的紫题呢

qq_35786326的博客 180

洛谷 P2155 [SDOI2008]沙拉公主的困惑(欧拉函数+逆元)

传送门 题目大意 求设M≤NM \leq NM≤N,求N!N!N!内有多少和M!M!M!互质的数 解题思路 一开始自己1A的,但是看到题解区的第一篇知道了本题是因为数据不够强才能写这么快,关于什么情况下逆元存在还是要留个心眼的 首先根据欧拉函数的两个性质: [m+1,2m],[2m+1,3m],...,[(n−1)m+1,nm][m+1,2m],[2m+1,3m],...,[(n-1)m+1,nm][m+1,2m],[2m+1,3m],...,[(n−1)m+1,nm]这些区间内和mmm互质的个数均为

Happig的博客 247

【洛谷P2155】[SDOI2008]沙拉公主的困惑

题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票。房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的数量。现在,请你帮助沙拉公主解决这个问题,由于可能张数非常大,你只需计算出对R取模后的答案即可。R是一个质数。 输入输出格式 输入格式: 第一行为两个整数T,R。R<=10^9+10,T...

weixin_30391339的博客 134

欧拉+逆元-洛谷P2155 [SDOI2008]沙拉公主的困惑

https://daniu.luogu.org/problem/show?pid=2155 这个题目信息量蛮大的; 首先一个定理 (x,y)=(x,y-x)//x>y 这个就是gcd啊; 设(x,y)=t; t|x; t|y ∴(x,y-x)=t; 那么 (x,y+k*x)=(x,y) 即 若一个数x与m!互质,那么x+(m!)也一定与m!互质,(x+m!*2)也一定与m!

我怎么这么菜的呢 453

洛谷 P2155 BZOJ 2186 codevs 2301 [SDOI2008]沙拉公主的困惑

题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票。房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的数量。现在,请你帮助沙拉公主解决这个问题,由于可能张数非常大,你只需计算出对R取模后的答案即可。R是一个质数。//codevs这里有坑,R是合数 输入输出格...

weixin_34146410的博客 93

洛谷 P2155 BZOJ 2186 codevs 2301 [SDOI2008]沙拉公主的困惑 ...

题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票。房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的数量。现在,请你帮助沙拉公主解决这个问题,由于可能张数非常大,你只需计算出对R取模后的答案即可。R是一个质数。//codevs这里有坑,R是合数 输入输出格...

weixin_34211761的博客 134
上一篇: bzoj 1026 [SCOI2009]windy数 题解(数位DP)
下一篇: bzoj 3329 Xorequ 题解(数位DP,矩阵快速幂)
LightningUZ
博客等级 码龄9年 33粉丝 254原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值