题目连接:

  传送

题解:

  真是一道好题……

一:

  一个分数$\frac{x}{y}$完全循环当其第一次出现时,当且仅当y与k互质,x与y互质,且y不等于1。

  整数情况下y一定为1,即也满足以上判断。

  推导:

    方法一:打表找规律= =

    方法二:x与y互质去重= =,设循环次数为l,则对于循环节第一次循环前剩余$x\mod y$,第二次循环前剩余$xk^l\mod y$,若其为循环则满足:,由x与y互质可知存在x对y的逆元,所以:

        

由贝祖定理可知,k与y互质。

二、反演:

          

  考虑d前面时间复杂度为$O(\sqrt{k}\ln k)$,后边分块时间复杂度$O(\sqrt n)$

  考虑如何得到$S(n,sg)=\sum_{i=1}^n \mu(isg)$。

  1.当$\mu(sg)==0$时,上式为0;

  2.设p为sg质因数,则有$S(n,sg)=\sum_{i=1}^n\mu(i)([p|i]-1)$,故$S(n,sg)=S(n/p,sg)-S(n,sg/p)$。

  故求一次$S(n,sg)$的时间复杂度约为$(O(2^{k的质因子个数}))$。

三、时间复杂度

  $O(\sqrt{nk}\ln k)$  

代码:

 #include "bits/stdc++.h"

 using namespace std;

 const int N=2e7+;

 int prim[N],num,miu[N],pre[N];
bool vis[N]; inline void init(){
miu[]=;
pre[]=;
register int i,j;
for( i=;i<N;++i){
if(!vis[i])
prim[++num]=i,miu[i]=-;
for( j=;prim[j]*i<N;++j){
vis[i*prim[j]]=true;
if(i%prim[j]) {
miu[i*prim[j]]=-miu[i];
}else{
miu[i*prim[j]]=;break;
}
}
pre[i]+=pre[i-]+miu[i];
}
} int n,m,k,wr[N],cnt;
int fac[][];
vector<int> factor[]; map<int,int> ss; inline int Get_miu(int x){
if(x<N) return pre[x];
if(ss.count(x)) return ss[x];
int ans=;
for(int i=,pos;i<=x;i=pos+){
pos=x/(x/i);
ans-=Get_miu(x/i)*(pos-i+);
}
return ss[x]=ans;
} inline int get_miu(int x,int sg){
if(sg==)return Get_miu(x);
if(x<=) return fac[sg][x];
else {
int p=wr[sg];
return get_miu(x/p,sg)-get_miu(x,sg/p);
}
} int main(){
// freopen("1.out","r",stdin);
// freopen("b1.out","w",stdout);
scanf("%d%d%d",&n,&m,&k);
init();
for(int i=;i<=k;++i)
for(int j=;j<=i;++j)
if(i%j==) factor[i].push_back(j); for(int i=;i<=;++i)
for(int j=;prim[j]<=i;++j) if(i%prim[j]==) wr[i]=prim[j];
for(int i=;i<=;++i)
if(k%i==)
for(int j=;j<=;++j)
fac[i][j]=fac[i][j-]+miu[j*i]; long long ans=,sum;
register int d,pos;
int last,now,nn,mm,t1,t2,t,g,s,p,q;
for(int i=;i<factor[k].size();++i){
t=factor[k][i];
sum=;
for( p=;p<factor[t].size();++p){
g=factor[t][p];
for( q=,s;q<factor[t/g].size();++q){
s=factor[t/g][q];
t1=s*g,t2=s*t;
nn=n/t1,mm=m/t2;
last=,now;
if(miu[s*g]==) continue;
for(d=,pos;d<=min(nn,mm);d=pos+){
pos=min(nn/(nn/d),mm/(mm/d));
now=get_miu(pos,s*g);
sum+=(now-last)*1ll*(nn/d)*(mm/d)*miu[s];
last=now;
}
}
}
ans+=sum*miu[t];
}
printf("%lld\n",ans);
}

【BZOJ 4652】【NOI 2016】循环之美的更多相关文章

  1. [NOI 2016]循环之美

    Description 题库链接 给出十进制下的 \(n,m,k\) ,求 \(\frac{i}{j},i\in[1,n],j\in[1,m]\) 在 \(k\) 进制下不同的纯循环小数个数. 纯循环 ...

  2. NOI 2016 循环之美 (莫比乌斯反演+杜教筛)

    题目大意:略 洛谷传送门 鉴于洛谷最近总崩,附上良心LOJ链接 任何形容词也不够赞美这一道神题 $\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{M}[gcd(i,j) ...

  3. [LOJ 2083][UOJ 219][BZOJ 4650][NOI 2016]优秀的拆分

    [LOJ 2083][UOJ 219][BZOJ 4650][NOI 2016]优秀的拆分 题意 给定一个字符串 \(S\), 求有多少种将 \(S\) 的子串拆分为形如 AABB 的拆分方案 \(| ...

  4. [bzoj 4650][NOI 2016]优秀的拆分

    传送门 Description 如果一个字符串可以被拆分为\(AABB\) 的形式,其中$ A$和 \(B\)是任意非空字符串,则我们称该字符串的这种拆分是优秀的. 例如,对于字符串\(aabaaba ...

  5. UOJ #221 【NOI2016】 循环之美

    题目链接:循环之美 这道题感觉非常优美--能有一个这么优美的题面和较高的思维难度真的不容易-- 为了表示方便,让我先讲一下两个符号.\([a]\)表示如果\(a\)为真,那么返回\(1\),否则返回\ ...

  6. 【BZOJ4652】【NOI2016】循环之美(莫比乌斯反演,杜教筛)

    [BZOJ4652]循环之美(莫比乌斯反演,杜教筛) 题解 到底在求什么呢... 首先不管他\(K\)进制的问题啦,真是烦死啦 所以,相当于有一个分数\(\frac{i}{j}\) 因为值要不相等 所 ...

  7. LibreOJ2085 - 「NOI2016」循环之美

    Portal Description 给出\(n,m(n,m\leq10^9)\)和\(k(k\leq2000)\),求在\(k\)进制下,有多少个数值不同的纯循环小数可以表示成\(\dfrac{x} ...

  8. [UOJ#221][BZOJ4652][Noi2016]循环之美

    [UOJ#221][BZOJ4652][Noi2016]循环之美 试题描述 牛牛是一个热爱算法设计的高中生.在他设计的算法中,常常会使用带小数的数进行计算.牛牛认为,如果在 k 进制下,一个数的小数部 ...

  9. [LOJ 2134][UOJ 132][BZOJ 4200][NOI 2015]小园丁与老司机

    [LOJ 2134][UOJ 132][BZOJ 4200][NOI 2015]小园丁与老司机 题意 给定平面上的 \(n\) 个整点 \((x_i,y_i)\), 一共有两个问题. 第一个问题是从原 ...

  10. [LOJ 2133][UOJ 131][BZOJ 4199][NOI 2015]品酒大会

    [LOJ 2133][UOJ 131][BZOJ 4199][NOI 2015]品酒大会 题意 给定一个长度为 \(n\) 的字符串 \(s\), 对于所有 \(r\in[1,n]\) 求出 \(s\ ...

随机推荐

  1. fastDFS与Java整合上传下载

    由于项目需要整合个文件管理,选择使用的是fastDFS. 整合使用还是很方便的. 准备 下载fastdfs-client-java源码 源码地址 密码:s3sw 修改pom.xml 第一个plugin ...

  2. 八、Join 连接查询

    文档目录 开发中...

  3. Course2-Python函数和模块

    一. 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率. 上一课里提到了Python的很多内置函数.在此主要讲自定义函数. 1. 定 ...

  4. Demo4

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  5. 信息化建设中的IT规划精要

    IT规划在信息化建设中发挥着"定位"和"导航"的作用,IT规划理论方法更是博大精深,细细讲来,会成为IT版本的"一千零一夜".因此,本文以& ...

  6. Jmeter 性能测试术语

    1.5 术语及缩写词 测试时间:一轮测试从开始到结束所使用的时间 并发线程数:测试时同时访问被测系统的线程数.注意,由于测试过程中,每个线程都是以尽可能快的速度发请求,与实际用户的使用有极大差别,所以 ...

  7. BuautifulSoup4库详解

    1.BeautifulSoup4库简介 What is beautifulsoup ? 答:一个可以用来从HTML 和 XML中提取数据的网页解析库,支持多种解析器(代替正则的复杂用法) 2.安装 p ...

  8. ERR_NAME_NOT_RESOLVED错误的解决

    参考:http://zhidao.baidu.com/link?url=-Beq80OXoSKef_9SmGXkQHvq2AkSE0aGfac02ykorglQF6JTP7F1XNtVxFn9EMfn ...

  9. MySQL 的索引优化

    索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本.MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的.My ...

  10. SharePoint2013 列表栏设置

    在实际项目中,会遇到对列表栏的深度操作,比如设置在新建项目也就是newForm是否可见,是否有默认值,默认标题等等,这类深度操作在页面上是无法配置的,因为需要设置SPFild这个对象,但是用share ...