传送门
求每个珠子的方案数
即有序的求三元组 \((x,y,z),x,y,z\le a\) 满足 \(gcd(x,y,z)=1\)
设 \(G_i\) 表示 \(i\) 个小于等于 \(a\) 的有序数字,满足 \(gcd=1\) 的方案数
容斥得到要求的
\[\frac{1}{6}(G_3+2G_2+3G_1)\]
然后 \(G_1=1\)
运用简单莫比乌斯反演得到
\[G_2=\sum_{i=1}^{a}\lfloor\frac{a}{i}\rfloor^2\mu(i)\]
\[G_3=\sum_{i=1}^{a}\lfloor\frac{a}{i}\rfloor^3\mu(i)\]
求项链条数
运用 \(Polya\) 定理
设 \(f(x)\) 表示 \(x\) 的点的环,选择上面求出的 \(m\) 种颜色,同色不相邻的方案数
那么要求的就是
\[\frac{1}{n}\sum_{i=1}^{n}f(gcd(i,n))=\frac{1}{n}\sum_{d|n}f(d)\varphi(\frac{n}{d})\]
求f
容斥不好做
朴素想法是枚举开始和结尾的颜色,显然也不好做
考虑增量算 \(f(x)\)
首先可以断开 \(x-1\) 的链
\(x-1\) 的首尾不同,贡献为 \((m-2)f(x-1)\)
\(x-1\) 的首尾相同,贡献为 \((m-1)f(x-2)\)
那么 \(f(x)=(m-2)f(x-1)+(m-1)f(x-2)\)
本题应该是默认 \(f(1)=0\),不然过不了样例
直接构造生成函数 \(F(x)=\sum_{i=0}^{x}f(i)x^i\)
那么 \(F(x)=(m-2)F(x)x+(m-1)F(x-2)x^2+f(2)\)
所以
\[F(x)=\frac{m-1}{1-(m-1)x}-\frac{m-1}{1+x}\]
\(f(x)=(m-1)^x-(-1)^{x-1}(m-1)\)
最后
注意到 \(n\) 可能是 \(10^9+7\) 的倍数
可以考虑对 \((10^9+7)^2\) 取模
如果是倍数,初始答案算出来和 \(n\) 一起除去 \(mod\) 再求逆元即可

# include <bits/stdc++.h>
using namespace std;
typedef long long ll;const int maxn(1e7 + 5);
const int mod(1e9 + 7);
const ll dmod((ll)mod * mod);
const ll inv6(833333345000000041ll);inline void Inc(ll &x, ll y) {x = x + y >= dmod ? x + y - dmod : x + y;
}inline ll Mul(ll x, ll y) {return (x * y - (ll)(((long double)x * y + 0.5) / (long double)dmod) * dmod + dmod) % dmod;
}inline ll Pow1(ll x, ll y) {register ll ret = 1;for (x %= mod, y %= mod - 1; y; y >>= 1, x = x * x % mod)if (y & 1) ret = ret * x % mod;return ret;
}inline ll Pow2(ll x, ll y) {register ll ret = 1;for (; y; y >>= 1, x = Mul(x, x)) if (y & 1) ret = Mul(ret, x);return ret;
}int test, pr[maxn / 10], tot, mu[maxn], cnt;
bitset <maxn> ispr;
ll n, a, ret, ans, d[maxn], ct[maxn];inline ll Calc(ll x) {register ll v = Pow2(ret, x);(x & 1) ? Inc(v, dmod - ret) : Inc(v, ret);return v;
}void Dfs(int x, ll v, ll phi) {if (x > cnt) {Inc(ans, Mul(phi, Calc(n / v)));return;}register int i;Dfs(x + 1, v, phi), v = v * d[x], phi = phi * (d[x] - 1), Dfs(x + 1, v, phi);for (i = 2; i <= ct[x]; ++i) v *= d[x], phi *= d[x], Dfs(x + 1, v, phi);
}inline void Solve() {register ll i, j, x;scanf("%lld%lld", &n, &a), ans = 0, ret = 2;for (i = 1; i <= a; i = j + 1) {j = a / (a / i);Inc(ret, Mul(Mul(Mul((a / i) + 3, a / i), a / i), (mu[j] - mu[i - 1] + dmod) % dmod));}ret = Mul(ret, inv6), Inc(ret, dmod - 1);for (i = 1, cnt = 0, x = n; i <= tot && pr[i] <= x / pr[i]; ++i)if (x % pr[i] == 0) {d[++cnt] = pr[i], ct[cnt] = 0;while (x % pr[i] == 0) x /= pr[i], ++ct[cnt];}if (x > 1) d[++cnt] = x, ct[cnt] = 1;Dfs(1, 1, 1);if (n % mod) ans = Mul(ans, Pow2(n, dmod - 2)), ans %= mod;else ans = (ans / mod) % mod * Pow1(n / mod, mod - 2) % mod;printf("%lld\n", ans);
}int main() {register int i, j;ispr[1] = 1, mu[1] = 1;for (i = 2; i < maxn; ++i) {if (!ispr[i]) pr[++tot] = i, mu[i] = -1;for (j = 1; j <= tot && i * pr[j] < maxn; ++j) {ispr[i * pr[j]] = 1;if (i % pr[j]) mu[i * pr[j]] = -mu[i];else {mu[i * pr[j]] = 0;break;}}}for (i = 2; i < maxn; ++i) mu[i] += mu[i - 1];scanf("%d", &test);while (test) Solve(), --test;return 0;
}

转载于:https://www.cnblogs.com/cjoieryl/p/10179536.html

Luogu3307:[SDOI2013]项链相关推荐

  1. bzoj3202:[Sdoi2013]项链

    思路:首先考虑如何求珠子个数,一个珠子由a,b,c三个数组成且属于区间[1,a],并满足gcd(a,b,c)=1.由于要求本质相同,对于a,b,c这样的一个无序的数列且满足gcd(a,b,c)=1,设 ...

  2. BZOJ 4330 JSOI2012 爱之项链

    Problem G: JSOI2012 爱之项链 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 13  Solved: 5 [Submit][Sta ...

  3. 【SDOI2013】项链【莫比乌斯反演】【Polya定理】【递推式求通项】【数论】

    题意:TTT 组数据,每组给定 n,an,an,a,求满足下列条件的项链数量: 有 nnn 个珠子. 每个珠子上有三个 [1,a]∩Z[1,a]\cap \Z[1,a]∩Z 的数,且三个数 gcd⁡\ ...

  4. 【SDOI2013 necklace】项链

    Description (JZOJ 3298) 有一个 n n颗珠子组成的项链 每颗珠子有3个面,可以写3个数字,数字的范围(0,a](0,a],两颗珠子是相同的当且仅当他们可以通过旋转变成一样 每颗 ...

  5. [SDOI2009]HH的项链

    题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的贝壳,因此,他的项链 ...

  6. luogu P3306 [SDOI2013] 随机数生成器(BSGS,数列求通项,毒瘤特判)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 发个水题的 题解证明我还在() luogu P3306 [SDOI2013] 随机数生成器 Webli ...

  7. 【每日DP】day12、P1063 能量项链(区间DP又一模板,震惊,只需要4行代码?)难度⭐⭐⭐

    P1063 能量项链 本题(NOIP2006)和石子合并(NOI1999)几乎一模一样 垃圾NOIP抄袭NOI,手动狗头 但是还是有细微的区别的,首先你得先能看懂题,石子合并是N堆石子,是i−ki-k ...

  8. P1203 [USACO1.1]坏掉的项链Broken Necklace

    题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...

  9. HLG 1376 能量项链

    题意: 给你一个 含有 n 个珠子的项链,规定只有相邻的珠子才能合到一起并得到能量,合到一起的到的新的珠子,可以和其相邻的珠子继续合成,前后次序没有要求, 问你最大能的到多大的能量: 分析  :用 d ...

  10. 可以预防新冠病毒的项链 -脉动

    这是一款来自于美国航空航天局( NASA )用于预防感染新冠病毒的坠饰,它通过检测你的手是否靠近你的面部,使用震动来提醒你不要触碰你的面部鼻子.嘴巴,不要揉眼睛等.这套硬件是一个开源的项目,发布在 G ...

最新文章

  1. jQuery选择器大全(48个代码片段+21幅图演示)
  2. 设置、刷新屏幕分辨率
  3. 一文读懂层次聚类(Python代码)
  4. 在硒中按TagName定位元素
  5. 商品pid是什么意思_0基础搞懂自动驾驶传统算法与深度学习的鸿沟-PID控制算法与MLP优化方法...
  6. eclipse闪退打不开问题
  7. Ubuntu香港apt-get源
  8. python编程语言_Python编程语言的历史
  9. https 加端口_Ubuntu 安装Node 10.16 跑 Nodeppt 加Hexo博客再来个为知笔记私有云
  10. 关于unity打包apk在手机上安装失败(-108)
  11. 岭回归(Ridge Regression)、OLS和吉洪诺夫正则化(Тихонов regularization)
  12. 【震驚】中国电信接管CDMA业务,內部FAQ (注意所有括弧的內容)
  13. 如何编写yaml格式的Ansible主机清单(inventory)及清单变量使用Demo
  14. 爆笑:学生假条和老师批示
  15. C语言编写的计算生肖年份的小程序
  16. 生物医学英语翻译,翻译公司的标准有哪些
  17. 李笑来和 stormzhang,其实是一类人
  18. 使用MemoryStream类读写内存
  19. 浅析产品新手引导设计
  20. 计算机系统集成双代号网络图讲解,系统集成项目管理工程师双代号时标网络图知识解读...

热门文章

  1. 02H5C3-11. Nginx中部署静态网站
  2. 美国乡村音乐历史[[[磁性的声音-成熟男人的味道-John Michael Montgomery]]]
  3. DLL加载: Debug版本正常加载,Release版本LoadLibrary加载失败,返回错误126
  4. 1.java基础 jdk,jre,jvm作业 - 答案(jdk,jre,jvm)
  5. halcon 缺陷检测 药片检测(有无)
  6. QFD修改工作流并重新发布中的问题
  7. 昆仑通态触摸屏保存历史曲线_mcgs历史数据保存到U盘
  8. Compile fails with 3.5 framework but succeeds with 4.0
  9. php日期函数实际应用,日期函数如何在PHP中使用
  10. RoaringBitmap应用场景