Solution

将原问题分为两个问题求解。

Part 1

首先求珍珠的种类数。

设\(f_i\)表示满足\(gcd = i\)的本质不同珍珠个数,

\(g_i\)表示满足\(gcd\)为\(i\)的倍数的本质不同珍珠个数

则\(f_1\)就是答案

由定义可得$$g(i)=\sum_{i|d}f(d)$$

\(mobius\)反演得到$$f(i)=\sum_{i|d}\mu(\frac{d}{i})g(d)$$

所以$$f(1)=\sum_{i =1}^{a}\mu(i)g(i)$$

下面计算\(g(i)\)

\(i\)的倍数有\(\lfloor\frac{a}{i}\rfloor\)个

考虑旋转和翻折产生的六个置换

由\(Burnside\)引理有

\[g(i)=\frac{\lfloor\frac{a}{i}\rfloor^3+3\lfloor\frac{a}{i}\rfloor^2+2\lfloor\frac{a}{i}\rfloor}{6}
\]

数论分块即可

Part 2

知道了珍珠的种类数后求本质不同的项链数

先设珍珠的种类数为\(c\)

不考虑本质不同的条件,先设\(h(i)\)为相邻不同,首尾不同项链数

初值$$h(1)=0,h(2)=c(c-1)$$

考虑转移 讨论放入一个珍珠,左右两边是否相同

若左右相同,则贡献为\((c-1)h(i-2)\)

若左右不同,则贡献为\((c-2)h(i-1)\)

综上

\[h(i)=(c-2)h(i-1)+(c-1)h(i-2)
\]

注意到这是一个二阶常系数递推关系,特征方程法求得通解为

\[h(i)=(c-1)^i+(-1)^i(c-1)
\]

考虑本质不同的方案数

设旋转i位,\(x_j\)为第j位的种类

则$$x_j = x_{(j+i) mod n}$$

将其看作第\(j\)个点向第\((j+i)modn\)个点连一条边

则整个项链成为许多个环,环内个点选的种类相同

环的长度为\(\frac{in}{lcm(i,)}=\frac{n}{gcd(i,n)}\)

每个环互不相交,因此只需考虑\(\frac{n}{\frac{n}{gcd(i,n)}}=gcd(i,n)\)个珍珠的\(h()\)值

由Burnside引理

\[ans=\frac{1}{n}\sum_{i=1}^{n}h(gcd(i,n))
\]

枚举\(gcd(i,n)\),上式成为

\[\begin{aligned}
ans &=\frac{1}{n}\sum_{d|n}\sum_{i=1}^{n}[gcd(i,n)==d]h(d)\\
&=\frac{1}{n}\sum_{d|n}\sum_{i=1}^{n}[gcd(\frac{n}{d},\frac{i}{d})==1]h(d)\\
&=\frac{1}{n}\sum_{d|n}\varphi(\frac{n}{d})h(d)
\end{aligned}
\]

大概的思路到这里就结束了.但是有些细节需要注意.比如\(\varphi(\frac{n}{d})\)无法直接求,需要分解质因数.模数可能会整除\(n\)

丑码贴在下面

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
typedef long long LL;
const LL mod = 1e9 + 7;
const LL MOD = mod * mod;
LL c, n, cnt, ans, a, y[10000][2];
int vis[10000010], prime[10000000], cnt2, T, mu[10000010], sum[10000010];
LL read() {
LL res, flag = 1; char ch = getchar();
for(; ch > '9' || ch < '0'; ch = getchar())
if(ch == '-') flag = -1;
for(res = 0; ch >= '0' && ch <= '9'; res = res * 10 + LL(ch - '0'), ch = getchar());
return res * flag;
}
LL mul(LL x, LL y, LL mo) {
LL z = (long double) x * y / mo + 0.5;
z = x * y - z * mo;
return (z % mo + mo) % mo;
}
LL Qpower(LL x, LL pnt, LL mo){
LL res = 1;
x = x % mo;
while(pnt) {
if(pnt & 1) res = mul(res, x, mo);
x = mul(x, x, mo);
pnt >>= 1;
}
return res;
}
LL F(LL x) {return (Qpower(c - 1, x, MOD) + (MOD + (x & 1 ? -1 : 1) * (c - 1)) % MOD) % MOD;}
void dfs(int k, LL p, LL x) {
if(k > cnt2) {
ans = (ans + mul(p, F(n / x), MOD)) % MOD;
return ;
}
dfs(k + 1, p, x);
for(int i = 1; i < y[k][1]; ++i) {
p /= y[k][0];
x /= y[k][0];
dfs(k + 1, p, x);
}
dfs(k + 1, p / (y[k][0] - 1), x / y[k][0]);
}
int main() {
T = read();
mu[1] = 1, sum[1] = 1;
for(int i = 2; i <= 1e7; ++i) {
if(!vis[i]) prime[++cnt] = i, mu[i] = -1;
for(int j = 1; j <= cnt && i * prime[j] <= 1e7; ++j) {
vis[i * prime[j]] = 1;
if(i % prime[j] == 0) break;
mu[i * prime[j]] = - mu[i];
}
sum[i] = sum[i - 1] + mu[i];
}
while(T--) {
ans = c = cnt2 = 0;
memset(y, 0, sizeof(y));
n = read(), a = read();
for(LL l = 1, r; l <= a; l = r + 1) {
LL m = a / l;
r = a / m;
c = (c + mul((sum[r] - sum[l - 1] + MOD) % MOD, mul(((mul(m, mul(m, m, MOD), MOD) + 3 * mul(m, m, MOD) % MOD) % MOD + m * 2 % MOD) % MOD, 833333345000000041ll, MOD), MOD)) % MOD;
}
LL tmp = n, p = n;
for(int i = 1; i <= cnt && prime[i] <= tmp; ++i) {
if(tmp % prime[i] == 0) {
y[++cnt2][0] = prime[i];
p = p / prime[i] * (prime[i] - 1);
while(tmp % prime[i] == 0) {
y[cnt2][1] ++;
tmp /= prime[i];
}
}
}
if(tmp > 1) {
p = p / tmp * (tmp - 1);
y[++cnt2][0] = tmp;
y[cnt2][1] = 1;
}
dfs(1, p, n);
if(n % mod == 0) ans = ans / mod * Qpower(n / mod, mod - 2, mod) % mod;
else ans = ans % mod * Qpower(n, mod - 2, mod) % mod;
printf("%lld\n",ans);
}
return 0;
}

注:来自半年前的我穿越时空了

【SDOI2013】 项链 题解的更多相关文章

  1. BZOJ3202 [Sdoi2013]项链

    Problem E: [Sdoi2013]项链 Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 427  Solved: 146[Submit][Sta ...

  2. bzoj 3202: [Sdoi2013]项链

    Description 项链是人体的装饰品之一,是最早出现的首饰.项链除了具有装饰功能之外,有些项 链还具有特殊显示作用,如天主教徒的十字架链和佛教徒的念珠. 从古至今人们为了美化人体本身,也美 化环 ...

  3. HH的项链题解(离线思想+链表+树状数组)

    本人第一篇博客重磅推出!!! 希望各位朋友以后多多捧场也多给写意见(我个人喜欢把题解写得啰嗦一点,因为这样方便理解,各位巨佬勿喷) 来讲一道提高+/省选-的骚题:HH的项链(这个HH你理解成皇后呵呵哈 ...

  4. bzoj3202:[Sdoi2013]项链

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

  5. 洛谷P3307 [SDOI2013]项链 [polya定理,莫比乌斯反演]

    传送门 思路 很明显的一个思路:先搞出有多少种珠子,再求有多少种项链. 珠子 考虑这个式子: \[ S3=\sum_{i=1}^a \sum_{j=1}^a\sum_{k=1}^a [\gcd(i,j ...

  6. 洛谷P1063能量项链题解

    $题目$ 不得不说,最近我特别爱刷这种区间DP题,因为这个跟其他的DP有些不一样的地方,主要是有一定的套路,就是通过小区间的状态更新大区间,从而得到原题给定区间的最优解. $但是$ 这个题应该跟$石子 ...

  7. 洛谷P1972 [SDOI2009]HH的项链 题解

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

  8. [SDOI2013]项链

    description luogu 最近,铭铭迷恋上了一种项链.与其他珍珠项链基本上相同,不过这种项链的珠子却与众不同,是正三菱柱的泰山石雕刻而成的. 三菱柱的侧面是正方形构成的,上面刻有数字. 能够 ...

  9. 洛谷 P3307: bzoj 3202: [SDOI2013] 项链

    题目传送门:洛谷P3307.这题在bzoj上是权限题. 题意简述: 这题分为两个部分: ① 有一些珠子,每个珠子可以看成一个无序三元组.三元组要满足三个数都在$1$到$m$之间,并且三个数互质,两个珠 ...

随机推荐

  1. MYSQL(基本篇)——一篇文章带你走进MYSQL的奇妙世界

    MYSQL(基本篇)--一篇文章带你走进MYSQL的奇妙世界 MYSQL算是我们程序员必不可少的一份求职工具了 无论在什么岗位,我们都可以看到应聘要求上所书写的"精通MYSQL等数据库及优化 ...

  2. redis学习之数据类型

    <?php //连接本地的 Redis 服务 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); echo "Co ...

  3. Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript来打造属于自己的个性化社交分享系统

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_143 每一个应用程序,其实都会有分享的需求,比如一键分享一篇文章或者一些活动到微博或者微信亦或者是twitter等社交平台,因为人 ...

  4. Python 函数修饰器

    # 一.用函数修饰函数 #!/usr/bin/python3 def decorate_func(func): def call(*args, **kwargs): print('you have c ...

  5. google nexus5x 刷机抓包逆向环境配置(三)

    本文仅供学习交流使用,如侵立删! google nexus5x 刷机抓包逆向环境配置(三) 安装抓包证书(Fiddler.Charles) 操作环境 nexus5x kaliLinux win10 准 ...

  6. 感谢有你!Apache DolphinScheduler 项目 GitHub star 突破 8k

    本周伊始,Apache DolphinScheduler 项目在 GitHub 上的 Github Star 总数首次突破 8K.目前,Apache DolphinScheduler 社区已经拥有 C ...

  7. Two---python循环语句/迭代器生成器/yield与return/自定义函数与匿名函数/参数传递

    python基础02 条件控制 python条件语句是通过一条或多条语句的执行结果(Ture或者False)来执行的代码块 python中用elif代替了else if,所以if语句的关键字为:if- ...

  8. 「vijos-bashu」lxhgww的奇思妙想(长链剖分)

    倍增离线,预处理出爹和孙子们.查询\(O(1)\) #include <cstdio> #include <cstring> #include <numeric> ...

  9. 急如闪电快如风,彩虹女神跃长空,Go语言高性能Web框架Iris项目实战-初始化项目ep00

    在Golang Web编程的世界里,君不言高性能则已,言高性能必称Iris.彩虹女神的名号响彻寰宇.名动江湖,单论一个快字,无人能出其右,就连以简洁轻量著称于世的Gin也难以望其项背,只见彩虹女神Ir ...

  10. WAF对抗-安全狗(联合查询篇)

    WAF对抗-安全狗(联合查询篇) 实验环境 网站安全狗APACHE版V4.0.靶场:dvwa 为了方便对比可以在这个在线靶场申请一个dvwa https://www.vsplate.com/ mysq ...