[BZOJ] DZY Loves Math 系列 I && II
为了让自己看起来有点事干 ,做个套题吧。。不然老是东翻翻西翻翻也不知道在干嘛。。。
\(\bf 3309: DZY \ Loves \ Math\)
令 \(h=f*\mu\)
很明显题目要求的就是$$\sum_{i=1}^{min(n,m)}h(i) \cdot \left \lfloor \frac{n}{i} \right \rfloor \left \lfloor \frac{m}{i} \right \rfloor$$
那个 \(*\) 就是狄利克雷卷积,虽然说我也不知道是不是这么写。。
然后我就不会了,这个卷出来又不是积性函数咋搞啊,暴力筛肯定T啊。。
然后通过奇奇妙妙的方法可以发现 \(h((p_1p_2 \cdots p_k)^t)=(-1)^k\),否则为 \(0\) 。大佬说随便分析一下就出来了,反正我是分析不出来,半懂不懂。。作为一个不负责任的博主当然就随便挂个链接。。
然后就阔以线性筛+前缀和预处理,询问分个块就完了。
#include<bits/stdc++.h>
#define LL long long
#define fr(i,x,y) for(int i=(x);i<=(y);i++)
#define rf(i,x,y) for(int i=(x);i>=(y);i--)
#define frl(i,x,y) for(int i=(x);i<(y);i++)
using namespace std;
const int N=10000001;
int b[N],p[N/10],L,c[N],a[N],h[N];
int T,n,m;
void read(int &x){
char ch=getchar();x=0;
for(;ch<'0'||ch>'9';ch=getchar());
for(;ch>='0'&&ch<='9';ch=getchar()) x=(x<<3)+(x<<1)+ch-'0';
}
void init(){
//h[1]=1;
frl(i,2,N){
if (!b[i]) p[++L]=i,a[i]=i,c[i]=1,h[i]=1;
for(int j=1;i*p[j]<N;j++){
int x=i*p[j];
b[x]=1;
if (i%p[j]==0){
a[x]=a[i]*p[j];c[x]=c[i]+1;
if (i==a[i]) h[x]=1;
else h[x]=c[i/a[i]]==c[x]?-h[i/a[i]]:0;
break;
}
c[x]=1;a[x]=p[j];
h[x]=c[i]==1?-h[i]:0;
}
}
frl(i,2,N) h[i]+=h[i-1];
}
int main(){
init();
read(T);
while(T--){
read(n);read(m);
LL ans=0;
int pre=0;int p=1;
while(p<=n&&p<=m){
if (n/(n/p)<m/(m/p)) p=n/(n/p);
else p=m/(m/p);
ans+=1LL*(h[p]-h[pre])*(n/p)*(m/p);
pre=p;p++;
}
printf("%lld\n",ans);
}
return 0;
}
\(\bf 3309: DZY \ Loves \ Math \ II\)
别的部分都很好想,但是那个背包的部分简直神仙吧。。
我懒得写一遍题解,这篇题解让我最终看懂了QAQ
(你懒还有理了)
顺便,进本题第一页祭,合影留念QwQ
感觉啥也没优化啊??发生了啥???(也许是取模优化?不过我日常取模优化,只是因为感觉这样写更方便。。)
#include<bits/stdc++.h>
#define LL long long
#define fr(i,x,y) for(int i=(x);i<=(y);i++)
#define rf(i,x,y) for(int i=(x);i>=(y);i--)
#define frl(i,x,y) for(int i=(x);i<(y);i++)
using namespace std;
const int N=2000002;
const int p=1e9+7;
int S,q,m,ss;
LL n;
int d[10],L;
int f[N*7];
int inv;
void read(int &x){
char ch=getchar();x=0;
for(;ch<'0'||ch>'9';ch=getchar());
for(;ch>='0'&&ch<='9';ch=getchar()) x=(x<<3)+(x<<1)+ch-'0';
}
void read(LL &x){
char ch=getchar();x=0;
for(;ch<'0'||ch>'9';ch=getchar());
for(;ch>='0'&&ch<='9';ch=getchar()) x=(x<<3)+(x<<1)+ch-'0';
}
inline void Add(int &x,int y){
x+=y;
while(x<0) x+=p;
while(x>=p) x-=p;
}
int qpow(int a,int n){
LL ans=1;
for(LL sum=a;n;n>>=1,sum=sum*sum%p) if (n&1) ans=ans*sum%p;
return ans;
}
void init(){
int x=S;
for(int i=2;i*i<=x;i++)
if (x%i==0){
x/=i;d[++L]=i;ss+=i;
if (x%i==0){
fr(i,1,q) printf("0\n");
exit(0);
}
}
if (x>1) d[++L]=x,ss+=x;
m=S*L;
f[0]=1;
fr(i,1,L){
fr(j,d[i],m) Add(f[j],f[j-d[i]]);
rf(j,m,S) Add(f[j],-f[j-S]);
}
inv=1;frl(i,2,L) inv*=i;inv=qpow(inv,p-2);
}
inline int C(LL x){
LL ans=inv;
frl(i,0,L-1) ans=ans*((x-i)%p)%p;
//cout<<ans<<endl;
return ans;
}
int main(){
read(S);read(q);
init();
while(q--){
read(n);
if (n<ss){ printf("0\n");continue; }
n-=ss;
LL x=n/S;
int ans=0;
for(LL i=x;n-i*S<=m;i--)
Add(ans,1LL*C(i+L-1)*f[n-i*S]%p);
printf("%d\n",ans);
}
return 0;
}
/*
30 1
1000000000000000000
*/
[BZOJ] DZY Loves Math 系列 I && II的更多相关文章
- BZOJ DZY Loves Math系列
⑤(BZOJ 3560) $\Sigma_{i_1|a_1}\Sigma_{i_2|a_2}\Sigma_{i_3|a_3}\Sigma_{i_4|a_4}...\Sigma_{i_n|a_n}\ph ...
- DZY Loves Math 系列详细题解
BZOJ 3309: DZY Loves Math I 题意 \(f(n)\) 为 \(n\) 幂指数的最大值. \[ \sum_{i = 1}^{a} \sum_{j = 1}^{b} f(\gcd ...
- DZY Loves Math系列
link 好久没写数学题了,再这样下去吃枣药丸啊. 找一套应该还比较有意思的数学题来做. [bzoj3309]DZY Loves Math 简单推一下. \[\sum_{i=1}^n\sum_{j=1 ...
- bzoj DZY Loves Math V
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 509 Solved: 284[Submit][Status][Discuss] Descriptio ...
- bzoj 3462: DZY Loves Math II
3462: DZY Loves Math II Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 211 Solved: 103[Submit][Sta ...
- ●BZOJ 3309 DZY Loves Math
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3309 题解: 莫比乌斯反演,线筛 化一化式子: f(x)表示x的质因子分解中的最大幂指数 $ ...
- BZOJ 3561 DZY Loves Math VI
BZOJ 3561 DZY Loves Math VI 求\(\sum_{i=1}^{n}\sum_{j=1}^{m}\text{lcm}(i,j)^{\gcd(i,j)}\),钦定\(n\leq m ...
- BZOJ 3309: DZY Loves Math
3309: DZY Loves Math Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 761 Solved: 401[Submit][Status ...
- 【BZOJ】3309: DZY Loves Math 莫比乌斯反演优化
3309: DZY Loves Math Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007) ...
随机推荐
- SoapUI 的几种常用参数化方式
今天给大家来梳理下soapui这款工具关于参数化的几种方式以及具体的应用场景 1.properties 官方文档:https://www.soapui.org/docs/functional-test ...
- 5G 时代,云计算迎来新风口
云计算是对传统IT模式从底层硬件到业务模式的颠覆,传统IT市场具备万亿级市场空间,目前云计算收入占IT支出占比尚小,渗透率较低,未来空间较大. 短期受到宏观经济等因素影响,云巨头资本开支增速有所波动, ...
- redis系列之------简单的动态字符串(SDS)
前言 Redis 没有直接使用 C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称 C 字符串), 而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的 ...
- 项目一:ssm超市订单管理系统
声明:项目参考于课程教材,学习使用,仅在此记录 项目介绍 ssm超市订单管理系统,功能模块有订单管理,供应商管理,用户管理,密码修改,退出系统,管理模块中包括基本的增删改查 集成工具使用idea,基于 ...
- Spring Boot WebFlux 集成 Mongodb 数据源操作
WebFlux 整合 Mongodb 前言 上一讲用 Map 数据结构内存式存储了数据.这样数据就不会持久化,本文我们用 MongoDB 来实现 WebFlux 对数据源的操作. 什么是 MongoD ...
- DJango错误日志生成
DJango错误日志生成 setting.py设置 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': ...
- Jenkins项目构建
一:新建项目 (1)点击新建,输入项目名称--构建一个自由风格的软件项目,点击ok (2)创建项目名称,选择节点标签 (3)构建触发器-----设置每两分钟执行一次 其中有5个参数 (*****) 第 ...
- Java学习笔记之Object常用方法
Object:万类之祖 == : 比较的是是否是同一个对象,比较的是地址 equals: 是Object里面的方法,默认的是==,比较的是地址,但在String类型里重写为比较内容 一般我们在 ...
- Ubuntu 重装vmtool
1. 虚拟机菜单 -> 更新虚拟机 : 2. 弹出的窗口中: 3. 拷贝红色的文件到可读写的目录: 4. 解压,运行解压出来的绿色脚本文件,一路回车:
- 《FFT家族—从不会到崩溃(坑)》读blog笔记
免责声明 原文地址https://blog.csdn.net/linjiayang2016/article/details/80341958,作者linjiayang2016.\text{linjia ...