额,,网上一堆题解,,随便一找就找到笨蒟蒻扒的了。

这个比较神奇的是纯循环小数就是[(y,k)=1],题解有证明这个的,貌似就是k进制下的类似循环节,不会不会。。

然后这道题就变成了求这个东西:∑(x<=n)∑(y<=m) [(x,y)=1][(y,k)=1]

显然要反演一下, 出来这个东西∑(d<=n)[(d,k)==1] μ(d) (n/d) ∑ (j<=m/d) [(j,k)==1]

然后k固定,所以搞一个∑(d<=n)[(d,k)==1] μ(d)和 ∑ (j<=m/d) [(j,k)==1],这两部分有神奇的递推式,然后各种各种,,不会不会。。。

(公式怎么打啊。。。)

这位神犇写的很详细 %%%% http://www.cnblogs.com/lcf-2000/p/6250330.html

 #include<bits/stdc++.h>
#define LL long long
using namespace std; const int maxn=;
const int mod=;
const int maxk=; int n,m,k,prime_k[maxk],cnt;
int prime[maxn],f[maxk];
int head[mod],next[maxn],to[maxn],tt;
int h1[][mod],n1[maxn],t1[maxn],t2;
bool vis[maxn],huzhi[maxk];
LL ans,zto[maxn],zt1[maxn],mo[maxn]; void mobius()
{
mo[]=;
for (int i=; i<maxn; i++)
{
if (!vis[i]) prime[++prime[]]=i,mo[i]=-;
for (int j=; j<=prime[] && i*prime[j]<maxn; j++)
{
vis[i*prime[j]]=;
if (i%prime[j]==)
{
mo[i*prime[j]]=;
break;
}
mo[i*prime[j]]=-mo[i];
}
}
for (int i=; i<maxn; i++) mo[i]+=mo[i-];
for (int i=; i<=k; i++) f[i]=f[i-]+(__gcd(i,k)==);
} LL F(int x){return (x/k)*f[k]+f[x%k];} LL solve_mo(int x)
{
if (x<maxn) return mo[x];
for (int i=head[x%mod];i;i=next[i]) if (to[i]==x) return zto[i];
int now=++tt; to[tt]=x; next[tt]=head[x%mod]; head[x%mod]=tt; zto[now]=;
for (int i=,nt=; nt<x; i=nt+) nt=x/(x/i),zto[now]-=(nt-i+)*solve_mo(x/i);
return zto[now];
}
LL G(int x, int y)
{
if (!x) return solve_mo(y);
if (y<=) return y;
for (int i=h1[x][y%mod];i;i=n1[i]) if (t1[i]==y) return zt1[i];
int now=++t2; t1[t2]=y; n1[t2]=h1[x][y%mod]; h1[x][y%mod]=t2;
return zt1[now]=G(x-,y)+G(x,y/prime_k[x]);
}
int main()
{
scanf("%d%d%d",&n,&m,&k); mobius();
for (int i=; prime[i]<=k; i++) if (k%prime[i]==) prime_k[++cnt]=prime[i];
for (int d=,l=min(n,m),pos; d<=l; d=pos+)
{
pos=min(n/(n/d),m/(m/d));// cout<<"!";
ans+=(G(cnt,pos)-G(cnt,d-))*(LL)(n/d)*F(m/d);
}
printf("%lld\n",ans);
return ;
}

小技巧:这里的记忆化搜索用链表代替了map(会不会map也是差不多的实现原理啊2333)

bzoj 4652: [Noi2016]循环之美的更多相关文章

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

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

  2. luogu 1587 [NOI2016]循环之美

    LINK:NOI2016循环之美 这道题是 给出n m k 求出\(1\leq i\leq n,1\leq j\leq m\) \(\frac{i}{j}\)在k进制下是一个纯循环的. 由于数值相同的 ...

  3. bzoj4652 [Noi2016]循环之美

    Description 牛牛是一个热爱算法设计的高中生.在他设计的算法中,常常会使用带小数的数进行计算.牛牛认为,如果在k进制下,一个数的小数部分是纯循环的,那么它就是美的.现在,牛牛想知道:对于已知 ...

  4. [NOI2016]循环之美

    Description 牛牛是一个热爱算法设计的高中生.在他设计的算法中,常常会使用带小数的数进行计算.牛牛认为,如果在 k  进制下,一个数的小数部分是纯循环的,那么它就是美的.现在,牛牛想知道:对 ...

  5. BZOJ4652 [Noi2016]循环之美 【数论 + 莫比乌斯反演 + 杜教筛】

    题目链接 BZOJ 题解 orz 此题太优美了 我们令\(\frac{x}{y}\)为最简分数,则\(x \perp y\)即,\(gcd(x,y) = 1\) 先不管\(k\)进制,我们知道\(10 ...

  6. BZOJ4652: [Noi2016]循环之美(莫比乌斯反演,杜教筛)

    Description 牛牛是一个热爱算法设计的高中生.在他设计的算法中,常常会使用带小数的数进行计算.牛牛认为,如果在 k  进制下,一个数的小数部分是纯循环的,那么它就是美的.现在,牛牛想知道:对 ...

  7. luogu P1587 [NOI2016]循环之美

    传送门 首先要知道什么样的数才是"纯循环数".打表可以发现,这样的数当且仅当分母和\(k\)互质,这是因为,首先考虑除法过程,每次先给当前余数\(*k\),然后对分母做带余除法,那 ...

  8. 题解 P1587 【[NOI2016]循环之美】

    知识点:莫比乌斯反演 积性函数 杜教筛 废话前言: 我是古明地恋,写这篇题解的人已经被我 请各位读者自行无视搞事的恋恋带有删除线的内容,谢谢茄子. 这道题目本身并不难,但是公式推导/代码过程中具有迷惑 ...

  9. BZOJ4652 NOI2016循环之美(莫比乌斯反演+杜教筛)

    因为要求数值不同,不妨设gcd(x,y)=1.由提示可以知道,x/y是纯循环小数的充要条件是x·klen=x(mod y).因为x和y互质,两边同除x,得klen=1(mod y).那么当且仅当k和y ...

随机推荐

  1. 获取当前表中的最大自增id的下一个自增id值

    SELECT auto_increment FROM information_schema.`TABLES` WHERE TABLE_SCHEMA='{$db_name}' AND TABLE_NAM ...

  2. 设计模式课程 设计模式精讲 3-8 迪米法特原则讲解及Coding

    1 课程讲解 1.1 定义 1.2 特质 1.3 重点 2 代码演练 2.1 反例 2.2 正例 1 课程讲解 1.1 定义 定义:一个对象应该对其他对象保持最少的了解.又叫最少知道原则. 1.2 特 ...

  3. 2.1 MySQL基础使用

    本文是课上资料的总结非原创没有转载地址 目录 引言 为什么需要数据库? 数据库和应用程序的关系 MySQL基础使用 一.数据库简介 1.1 简介 1.2 常见数据库管理系统 1.3 MySQL卸载 1 ...

  4. 【CoreBluetooth】iOS 系统蓝牙框架

    https://www.jianshu.com/p/eb58dcbae5f9 2016.06.07 23:04* 字数 285 阅读 852评论 4喜欢 3 暂时 第一次功能性研究,具体实现,后续添加 ...

  5. poj1988 Cube Stacking(并查集

    题目地址:http://poj.org/problem?id=1988 题意:共n个数,p个操作.输入p.有两个操作M和C.M x y表示把x所在的栈放到y所在的栈上(比如M 2 6:[2 4]放到[ ...

  6. 全局注册Vue.directive

    1.src目录下新建directives文件 export default { install: function(Vue, option) { // 1:el指绑定的dom元素 // 2:bindi ...

  7. Spring Boot 2.x教程-Thymeleaf 原理是什么

    layout: post title: Spring Boot 2.x教程-Thymeleaf 原理是什么 categories: SpringBoot description: Spring Boo ...

  8. Android。WebView加载UR请求使用Cookie储存User_Id记录用户是否登陆过

    1.WebView初始化的时候用倒如下代码: if (Build.VERSION.SDK_INT >= 21) { CookieManager.getInstance().setAcceptTh ...

  9. 在win10中启动redis

    1.输入命令"redis-server.exe redis.windows.conf ",按回车键, 2.输入“redis-cli.exe -h 127.0.0.1 -p 6379 ...

  10. [aac @ ...] Specified sample format s16 is invalid or not supported

    在使用FFmpeg打开编码器的时候出现以下错误: [aac @ 000001da19fd7200] Specified sample format s16 is invalid or not supp ...