传送门
求每个珠子的方案数
即有序的求三元组 \((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. C# Timer定时器用法
  2. 从1.5k到18k, 一个程序员的5年成长之路【转载】
  3. 打造含有 Mali Graphics Debugger 支持的虚幻引擎应用程序
  4. shell与export命令
  5. OpenCV-Python实战(番外篇)——利用 K-Means 聚类进行色彩量化
  6. RecyclerView 下拉刷新和加载更多
  7. 捕获input 文本框内容改变的事件(onchange,onblur,onPropertyChange比较)
  8. virtual box linux 安装增强功能,在linux系统中安装virtualbox增强功能(增强包)的详细步骤...
  9. 夜曲歌词 拼音_夜曲歌词完整版 lrc 周杰伦 - Yo歌词网
  10. 多语言机器翻译 | (1)多语言翻译模型简介
  11. linux 查看策略路由,Linux下的策略路由。
  12. 天翼云RDS数据库如何修改数据库参数
  13. avi文件是什么?avi文件格式介绍
  14. 微信文件撤回时间多长_微信消息怎么撤回?撤回时间限制是多久?
  15. 使用phpStudy配置SSL支持Https
  16. AI会给世界带来什么变化?世界著名机器人学家关于未来的预言!
  17. ADS-WK11-Review of Programming Contest Rules-回溯剪枝
  18. centos 磁盘分区
  19. White Box Cartoonization 人工智能动画化0.0
  20. Android 隐藏手机号中间四位和邮箱隐藏

热门文章

  1. selenium网页截图总结
  2. EXCEL常见函数之逻辑函数
  3. 攻防世界web练习5
  4. 纳什均衡(Nash equilibrium)及经典案例
  5. 如何将 Laravel 数据表里的数据导出成 Seeder 文件
  6. 【网络】MTU理解、MTU对上层协议的影响
  7. SQL vs NoSQL 没有硝烟的战争!
  8. Andriod studio 学习 之 Recyclerview
  9. IE11下载文件文件名出现乱码
  10. 火车采集器采集ajax,火车头采集器JavaScript之ajax网站采集实例教程