[BZOJ3930][CQOI2015]选数(莫比乌斯反演+杜教筛)

深入IR2104数据手册:被忽略的SD引脚用法和死区时间调节实战 本文深入解析IR2104半桥驱动芯片的SD引脚用法和死区时间调节技巧,帮助硬件工程师优化电机控制和电源转换系统。通过详细的电路设计、实测数据和调试方法,揭示SD引脚的多重保护机制和死区时间的精密调节策略,提升系统安全性和效率。 阅读详情

=== ===

这里放传送门

=== ===

题解

设 F(k) 为在范围内选取n个数字,最大公因数为 k 的方案数,f(k)为在范围内选取n个数字,公因数为 k 的方案数。那么显然f(k)=∑k|dF(d),并且 f(k)=(⌊Hk⌋−⌊L−1k⌋)n 。
由反演公式可得 F(k)=∑k|dμ(dk)f(d) ,可以发现 d 的枚举上限最大到H并且必须是 k 的倍数。那么设d=kd′,用 d′ 替换 d 可得F(k)=∑d=1⌊Hk⌋μ(d)f(kd)=∑d=1⌊Hk⌋μ(d)(⌊Hkd⌋−⌊L−1kd⌋)n
那么我们做一个预处理令 H=⌊Hk⌋ , L=⌊L−1k⌋ ,于是 F(k)=∑d=1Hμ(d)(⌊Hd⌋−⌊Ld⌋)n
写成这个样的式子就比较明确了,利用分块枚举除法+杜教筛就可以了。
有一个问题是因为这里枚举上限是到较大的 H 而不是较小的L,所以如果 ⌊Ld⌋ 变成0了就不要用它做除法了,需要特判一下

代码

#include<map>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1000000;
const long long Mod=1000000007;
int n,k,L,H,prm[1000010],mu[1000010],tail;
bool ext[1000010];
long long ans;
map<int,int> rec;
long long powww(long long a,int t){
    long long ans=1;a%=Mod;
    while (t!=0){
        if (t&1) ans=(ans*a)%Mod;
        a=(a*a)%Mod;t>>=1;
    }
    return ans;
}
void get_prime(int N){
    mu[1]=1;
    for (int i=2;i<=N;i++){
        if (ext[i]==false){
            prm[++prm[0]]=i;mu[i]=-1;
        }
        for (int j=1;j<=prm[0];j++){
            if ((long long)i*prm[j]>N) break;
            ext[i*prm[j]]=true;
            if (i%prm[j]==0) break;
            else mu[i*prm[j]]=-mu[i];
        }
    }
    for (int i=1;i<=N;i++) mu[i]+=mu[i-1];
}
long long get_mu(int n){
    if (n<N) return mu[n];
    if (rec[n]!=0) return rec[n];
    long long sum=1;
    for (int i=2,tail;i<=n;i=tail+1){
        tail=n/(n/i);
        sum-=get_mu(n/i)*(long long)(tail-i+1)%Mod;
        sum%=Mod;
    }
    return rec[n]=sum;
}
int main()
{
    scanf("%d%d%d%d",&n,&k,&L,&H);
    L--;L/=k;H/=k;
    get_prime(N);
    for (int i=1;i<=H;i=tail+1){
        if (L/i!=0) tail=min(H/(H/i),L/(L/i));
        else tail=H/(H/i);
        ans=(ans+powww((H/i-L/i),n)*(get_mu(tail)-get_mu(i-1))%Mod)%Mod;
    }
    ans=(ans+Mod)%Mod;
    printf("%I64d\n",ans);
    return 0;
}

偏偏在最后出现的补充说明

这题的反演做法好像并没有用到 H−L≤105 这个限制?但是因为区间范围比较小似乎有一种代码长度短一些的容斥做法。。

电子设计(1)二极管防电源反接电路 二极管经常用来作电源防反接保护,所需器件少,电路简单。 阅读详情

相关推荐

Cursor 团队代码规范与开发规则

本文提出了一套 Cursor 项目开发规范,涵盖代码结构、命名、日志、测试等关键环节,旨在提升代码质量和团队协作效率。核心规则包括:文件不超过2000行、函数不超过80行;变量命名禁用无意义单词;日志只记录关键信息;配置项禁止硬编码;依赖和敏感信息统一管理;核心逻辑测试覆盖率≥80%;Git提交遵循Conventional Commits规范。通过一个车辆数据处理函数的改造案例,展示了从"不规范"到"规范"的代码优化过程,体现了拆分函数、常量管理、错误处理等规范的实际

1256

[BZOJ 3930] [CQOI 2015]选数(莫比乌斯反演+杜教筛)

[BZOJ 3930] [CQOI 2015]选数(莫比乌斯反演+杜教筛) 题面 我们知道,从区间\([L,R]\)(L和R为整数)中选取N个整数,总共有\((R-L+1)^N\)种方案。求最大公约数刚好为K的选取方案有多少个。由于方案数较大,你只需要输出其除以1000000007的余数即可。 \[N,K,L,H \leq 10^9,H-L \leq 10^5\] 分析 \(\becau...

weixin_30551963的博客 212

colmap+openMVS稠密重建

简要记录一下colmap+openMVS稠密重建相关使用。

weixin_41631106的博客 2243

BZOJ 3930: [CQOI2015]选数 莫比乌斯反演 + 杜教筛

求 $\sum_{i=L}^{R}\sum_{i'=L}^{R}....[gcd_{i=1}^{n}(i)==k]$ $\Rightarrow \sum_{i=\frac{L}{k}}^{\frac{R}{k}}\sum_{i'=\frac{L}{k}}^{\frac{R}{k}}....[gcd_{i=1}^{n}(i)==1]$ $\Rightarrow \sum_{i=\fr...

weixin_30411239的博客 152

SocraticLM: Exploring Socratic Personalized Teaching with Large Language Models

大型语言模型(LLM)被认为是推进智能教育的一项关键技术,因为它们展示了深入理解教学场景和为学生提供个性化指导的潜力。然而,当前个性化教学中基于LLM的应用主要遵循“问答”范式,学生被动地获得答案和解释。在本文中,我们提出了苏格拉底式教学模式(SocraticLM ),它实现了一种苏格拉底式的“发人深省”的教学范式,实现了真正的课堂教师的角色,让学生积极参与到真正掌握解决问题所需的思考过程中。

weixin_43961909的博客 2884

国产AI芯片实战:用寒武纪MLU370低成本部署DeepSeek-R1,实测推理效果与成本分析

本文详细介绍了寒武纪MLU370芯片在部署DeepSeek-R1大模型时的实战效果与成本优势。通过实测数据对比,MLU370在推理速度、能效比和本地化服务方面表现突出,尤其适合智能客服、内容生成等场景,可显著降低硬件投入和运维成本。

weixin_30613727的博客 457

bzoj 3930: [CQOI2015]选数 莫比乌斯反演+杜教筛

题意我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案。小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公约数,以便进一步研究。然而他很快发现工作量太大了,于是向你寻求帮助。你的任务很简单,小z会告诉你一个整数K,你需要回答他最大公约数刚好为K的选取方案有多少个。由于方案数较大,你只需要输出其除以1000000007的余数即可

beginend 709

Fluent验证案例03:管道中湍流流动压降计算——采用kw-sst模型计算压降更为准确。

阅读(4053) 评论(0)本案例利用Fluent计算管道中湍流流动压降。

qq_15963745的博客 877

[CQOI2015][bzoj3930] 选数 [杜教筛+莫比乌斯反演]

题面: 传送门 思路: 首先我们把区间缩小到$\left[\lfloor\frac{L-1}{K}\rfloor,\lfloor\frac{R}{K}\rfloor\right]$ 这道题的最特殊的点在于,他的gcd不是两个数的而是多个数的,是一坨sigma 但是,我们发现它依然可以反演 令$f\left(i\right)$为区间$\left[l,r\right]$内选出$n...

115

RTOS与Linux功能差异与应用场景全面对比

在嵌入式系统的开发中,操作系统的选择至关重要。和是两种广泛应用的操作系统,它们在功能、设计目标以及应用领域中各具优势。随着嵌入式系统的不断发展,已成为嵌入式行业的大趋势。那么,这两者到底有什么不同呢?

硬核科技 402

EtherCAT主站SOEM -- 19 --Qt-Soem通过CSP模式(周期同步位置模式)控制一个电机转圈圈

以上就是EtherCAT主站SOEM – 19 --Qt-Soem通过CSP模式(周期同步位置模式)控制一个电机转圈圈的内容。有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。创作不容,如果文档对您有帮助,记得给个赞。

常驻客栈的博客--嵌入式EtherCAT 1997

【bzoj3930】[CQOI2015]选数 【莫比乌斯反演】【杜教筛】

题目传送门 题意:求从区间[L,H][L,H][L,H](LLL和HHH为整数)中选取NNN个整数,使它们的gcdgcdgcd为KKK的方案总数模100000000710000000071000000007的值。 题解:我们令l=⌊L−1K⌋l=⌊L−1K⌋l=\lfloor\frac{L-1}{K}\rfloor,r=⌊HK⌋r=⌊HK⌋r=\lfloor\frac{H}{K}\rfloor...

2016gdgzoi471 644

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【bzoj3930】[CQOI2015]选数 莫比乌斯反演+杜教筛

题目描述 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案。小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公约数,以便进一步研究。然而他很快发现工作量太大了,于是向你寻求帮助。你的任务很简单,小z会告诉你一个整数K,你需要回答他最大公约数刚好为K的选取方案有多少个。由于方案数较大,你只需要输出其除以10000...

weixin_30896511的博客 150

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

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

[CQOI2015]选数(bzoj3930 莫比乌斯反演+杜教筛+累加有上下界)

题目: [CQOI2015]选数   题意:   思路: 若L%k==0,那么累加的下界为 ,若L%k!=0,那么累加的下界为  ,综合一下,下界为 。 我们设下界 = t 。 原式 =   设 设 则 (莫比乌斯反演) 把a除掉后,上届为 ,下界为 = 。 因此, 。 因此,可以对 g(d) 进行数论分块,通过杜教筛求莫比乌斯函数的前缀和。 ...

残阳止水 251

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

BZOJ 3930 CQOI2015 选数 莫比乌斯反演

题目见 http://pan.baidu.com/s/1o6zajc2 此外不知道H-L #include #include #include #include #include #define M 10001000 #define INF 0x3f3f3f3f #define MOD 1000000007 using namespace std; int mu[M],p

世界 2万+

【BZOJ3930】[CQOI2015]选数 莫比乌斯反演

【BZOJ3930】[CQOI2015]选数 Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案。小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公约数,以便进一步研究。然而他很快发现工作量太大了,于是向你寻求帮助。你的任务很简单,小z会告诉你一个整数K,你需要回答他最大公约数刚好...

aodanchui1057的博客 130

bzoj3930 CQOI2015 选数

题面:bzoj3930 题意:从[L,H][L,H][L,H]选出nnn个数,使它们的最大公约数为kkk的方案数,对1e9+71e9+71e9+7取模。 1≤n,k,L,H≤1091 \le n, k, L, H \le 10^91≤n,k,L,H≤109,H−L≤105H-L \le 10^5H−L≤105 题解:即求∑a1=LH∑a2=LH…∑an=LH[gcdi=1n(ai)=k]\sum ...

wennitao的博客 300

BZOJ 3930 [CQOI2015]选数 & 51nod 1244 莫比乌斯函数之和 & BZOJ 2301

这篇文章姑且叫做小总结大杂烩吧(大雾)BZOJ 3930题意从区间 [L,H][L,H] 中选取 NN 个整数,求它们的最大公约数为 KK 的方案总数,答案 mod1e9+7mod 1e9+7. 1≤N,K≤1e9,1≤L≤H≤1e9,H−L≤1e51\leq N,K\leq 1e9,1\leq L\leq H\leq 1e9,H-L\leq 1e5.推导就是莫比乌斯反演最常规的套路了 记 f(

kkkkahlua的博客 465

bzoj3930 & 洛谷P3172 [CQOI2015]选数 狄利克雷卷积+杜教筛+快速幂

题目链接: bzoj3930 洛谷P3172 前置技能: 快速幂(雾) 杜教筛 狄利克雷卷积(莫比乌斯反演) 首先把答案表示出来: 这里先把LLL和RRR都除以kkk,然后gcd=kgcd=kgcd=k就转化成gcd=1gcd=1gcd=1。 ans=Σx1=LRΣx2=LR...Σxn=LR[gcd(x1,x2,...,xn)=1]ans=\Large\Sigma\large_{x_1=L}^R...

The_OIer的博客 307

【bzoj3930】[CQOI2015]选数 莫比乌斯反演

首先问题是从l~r中选n个数,最大公约数为k的方案数 再转化一下,l/k~r/k中选n个数,最大公约数为1的方案数 n=2时很容易,我们看一下n=3的情况 那么,其实选n个数也是同理 分块,枚举r/kd和l-1/kd的取值,然后快速幂计算就可以了,问题在于如何处理出μ函数的前缀和? 还是参考PoPoQQQ大爷的吧:http://blog.youkuaiyun.com/popoqqq/

Oxer的专栏 1506

[BZOJ3930][CQOI2015]选数

BZOJ Luogu 原题因为\(H-L\le10^5\)的限制,其实可以不用杜教筛。不过去掉这个限制本题还是可做的。以下题解忽视这个条件并使用了杜教筛。 sol 首先\(L=\lfloor\frac {L-1}{K}\rfloor\),\(R=\lfloor\frac RK\rfloor\),转化为在这个区间里选出n个数使它们的\(\gcd\)等于1.这个显然可以反演得到 \[ans=...

abcyan1235的博客 92

Bzoj3930: [CQOI 2015] 选数 & COGS2699: [CQOI 2015] 选数加强版

题面 Bzoj COGS加强版 Sol 非加强版可以枚举AC这里不再讲述 设f(i)f(i)表示在[L,H][L, H]取NN个,gcd为igcd为i的方案数 F(i)=∑i|df(d)F(i)=\sum_{i|d}f(d)表示[L,H][L,H]取NN个,gcd为igcd为i的倍数的方案数 易得F(i)=(⌊Hi⌋−⌊L−1i⌋)NF(i)=(\lfloor\fr

Cyhlnj 327

bzoj3944 sum 杜教筛

题目链接:传送门 杜教筛前置技能: 莫比乌斯反演 & 狄利克雷卷积 杜教筛基础 点亮前置技能就珂以发现这是裸题…… 首先杜教筛要卷积一个函数。 先考虑S(n)=Σi=1nφ(i)S(n)=\Large\Sigma\large_{i=1}^{n}φ(i)S(n)=Σi=1n​φ(i)的情况: 发现有一条式子叫做φ∗I=idφ*I=idφ∗I=id。 所以让两边卷积一个III,得到(I∗S)(...

The_OIer的博客 301

BZOJ 3930 [CQOI2015]选数

题目链接 https://lydsy.com/JudgeOnline/problem.php?id=3930 题解 反演得到 ∑i=1⌊h/k⌋μ(i)(⌊hki⌋−⌊l−1ki⌋)n \sum_{i=1}^{\lfloor h/k\rfloor} \mu(i) (\lfloor \frac{h}{ki}\rfloor-\lfloor\fr...

dilei7762的博客 166
上一篇: [BZOJ2732][HNOI2012]射箭(二分+半平面交)
下一篇: [BZOJ3530][Sdoi2014]数数(AC自动机+数位DP)
FromATP
博客等级 码龄10年 75粉丝 163原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值