[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) ...
随机推荐
- 白话HTTPS加密机制
在讲主题之前,我们先来区分两个概念:签名和加密有什么区别? 我们从字面意思看: 签名就是一个人对文件签署自己的名字,证明这个文件是我写的或者我认可的,所以只要别人看到我的签名,认识我字迹的人就知道这个 ...
- 文件操作——RandomAccessFile
文件操作——RandomAccessFile 构建RandomAccessFileJava提供了一个可以对文件随机访问的操作,访问包括读和写操作.该类名为RandomAccessFile.该类的读 ...
- sbt 学习笔记(1)sbt安装和交互式界面使用
下载sbt: http://www.scala-sbt.org/download.html 解压zip文件F:\sbt-0.13.15 配置环境变量 如果需要可以修改F:\sbt-0.13.15\sb ...
- Python制作有道翻译小工具
该工具主要是利用了爬虫,爬取web有道翻译的内容. 然后利用简易GUI来可视化结果. 首先我们进入有道词典的首页,并点击翻译结果的审查元素 之后request响应网页,并分析网页,定位到翻译结果. 使 ...
- Beautiful Soup 4.2.0 文档(一)
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时 ...
- Eclipse 创建 Maven 项目
本人也是新手小白,在创建 Maven 项目的时候几乎踩完了所有的坑.特此总结如下: 1.咱先选中 File -> New -> Maven Project 2.然后如下图 在这里说明 ...
- Android 使用appcompat_v7包以及源码注意事项
最近学习和实践Android,无数次被AS和gradle惨痛的折磨,于是决定坚守Eclipse阵地..真是无奈之举,AS和gradle对我而言就像win10一样不讨喜. 当然Eclipse中开发and ...
- lodash 学习笔记
一.介绍 官方文档: 中文 - https://www.lodashjs.com/docs/latest 英文- https://lodash.com/docs/4.17.15 1.作用 lodash ...
- go-结构体和方法
结构体类型的字面量由关键字type.类型名称.关键字struct,以及由花括号包裹的若干字段声明组成. type Person struct { Name string Gender string A ...
- UI测试之元素定位
定位方式优先级选择: ID>Name>CSS>XPath 1.使用id定位 2.使用name定位 3.使用class定位 4.使用css选择器定位 示例xml: <?xml ...