BZOJ3202 [Sdoi2013]项链
Problem E: [Sdoi2013]项链
Time Limit: 30 Sec Memory Limit: 512 MB
Submit: 427 Solved: 146
[Submit][Status][Discuss]
Description
项链是人体的装饰品之一,是最早出现的首饰。项链除了具有装饰功能之外,有些项 链还具有特殊显示作用,如天主教徒的十字架
链和佛教徒的念珠。 从古至今人们为了美化人体本身,也美 化环境,制造了各种不同风格,不同特点、不同式样的项链,满足了不同肤色、不同民族、不同审美观的人的审美需要。就材料而论,首
饰市场上的项链有黄金、白银、珠宝等几种。珍珠项链为珍珠制成的饰品,即将珍珠 钻孔后用线串在一起,佩戴于项间。天然珍珠项链具有一定的护养作用。
最近,铭铭迷恋上了一种项链。与其他珍珠项链基本上相同,不过这种项链的珠子却 与众不同,是正三菱柱的泰山石雕刻而成的。三菱柱的侧面是正方形构成的,上面刻有数字。 能够让铭铭满意的项链必须满足下面的条件:
1:这串项链由n颗珠子构成的。
2:每一个珠子上面的数字x,必须满足0<x<=a,且珠子上面的数字的最大公约数要恰 好为1。两个珠子被认为是相同的,当且仅当他们经过旋转,或者翻转后能够变成一样的。 3:相邻的两个珠子必须不同。
4:两串项链如果能够经过旋转变成一样的,那么这两串项链就是相同的! 铭铭很好奇如果给定n和a,能够找到多少不同串项链。由于答案可能很大,所以对输 出的答案mod 1000000007。
Input
数据由多组数据构成:
第一行给定一个T<=10,代表由T组数据。
接下来T行,每行两个数n和a。
Output
对于每组数据输出有多少不同的串。
Sample Input
2 2
Sample Output
HINT
对于100%的数据:所有的n<=10^14,a<=10^7,T<=10;
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
#define ll long long
using namespace std;
const int p=1e9+,N=;
int tot,pri[N],mu[N],phi[N];
bool vis[N]; ll a;
ll mod,t1,t3;
long double t2;
struct P{
ll x;
P(){}
P(ll _x):x(_x){}
}n,ans,m,s1,s2,temp,sum[N];
P operator *(P x,P y){
ll t1,t3; long double t2;
t1=x.x*y.x,t2=(long double)x.x*y.x/mod; t3=(ll)(t1-(ll)t2*mod)%mod;
return (P){(t3+mod)%mod};
}
P operator +(P x,P y){return (P)((x.x+y.x)%mod);}
P operator -(P x,P y){return (P)(((x.x-y.x)%mod+mod)%mod);}
ll read()
{
ll x=,f=; char ch;
while (ch=getchar(),ch<''||ch>'') if (ch=='-') f=-;
while (x=x*+ch-'',ch=getchar(),ch>=''&&ch<='');
return x*f;
}
/*P ksm(P x,ll k,ll mod)
{
P res; res.x=1; for (ll i=k; i; i>>=1,x=x*x) if (i&1) res=res*x;
return res;
}*/
P ksm(P x,ll y,ll p){
if (y==) return (P)();
if (y==) return (P)(x.x%p);
P d=ksm(x,y/,p);
if (y&) return d*d*x;
else return d*d;
}
ll phii(ll x){
if (x<N) return phi[x];
ll t=x;
for (int i=;i<=sqrt(x);i++){
if (x%i==){
t=t-t/i;
while (x%i==) x/=i;
}
}
if (x>) t=t-t/x;
return t;
}
P work(ll x)
{
P res; res.x=;
res=ksm((P)(m.x-),x,mod);
if (x&) res=res+(P)(-m.x); else res=res+(P)(m.x-);
res.x=(res.x+mod)%mod;
res=res*(P)(phii(n.x/x));
return res;
}
void prepare()
{
tot=; memset(vis,,sizeof(vis)); mu[]=phi[]=;
for (int i=;i<N;i++){
if (!vis[i]){
mu[i]=-,phi[i]=i-;
pri[++tot]=i;
}
for (int j=;j<=tot;j++){
if (1LL*i*pri[j]>=N) break;
vis[i*pri[j]]=;
if (i%pri[j]==){
mu[i*pri[j]]=,phi[i*pri[j]]=phi[i]*pri[j];
break;
}else mu[i*pri[j]]=-mu[i],phi[i*pri[j]]=phi[i]*phi[pri[j]];
}
}
for (int i=;i<N;i++) sum[i].x=;
for (int i=;i<N;i++) sum[i].x=sum[i-].x+mu[i];
}
int main()
{
prepare();
int T=read();
while (T--)
{
n.x=read(); a=read(); ans.x=; ans.x=m.x=s1.x=s2.x=;
if (n.x%p==) mod=1ll*p*p; else mod=p;
for (int j,i=;i<=a;i=j+){
j=a/(a/i);
s1=s1+(P)(a/i)*(P)(a/i)*(P)(a/i)*(P)(sum[j]-sum[i-]);
s2=s2+(P)(a/i)*(P)(a/i)*(P)(sum[j]-sum[i-]);
}
m=(P)(s1+s2*(P)((ll))+(P)((ll)))*ksm((P)(),1ll*p*(p-)-,mod);
for (int i=; 1ll*i*i<=n.x; i++)
{
if (n.x%i==){
ans=ans+work(i);
if (1ll*i*i!=n.x) ans=ans+work(n.x/i);
}
}
mod=p;
if (n.x%p==)
{
ans.x/=p; temp=(P)(n.x/p); temp=ksm(temp,p-,p);
ans=ans*temp; printf("%lld\n",ans.x%p);
}
else
{
temp=(P)(n.x); temp=ksm(temp,p-,p);
ans=ans*temp; printf("%lld\n",ans.x%p);
}
}
return ;
}
BZOJ3202 [Sdoi2013]项链的更多相关文章
- 【BZOJ3202】项链(莫比乌斯反演,Burnside引理)
[BZOJ3202]项链(莫比乌斯反演,Burnside引理) 题面 BZOJ 洛谷 题解 首先读完题目,很明显的感觉就是,分成了两个部分计算. 首先计算本质不同的珠子个数,再计算本质不同的项链个数. ...
- bzoj3202:[Sdoi2013]项链
思路:首先考虑如何求珠子个数,一个珠子由a,b,c三个数组成且属于区间[1,a],并满足gcd(a,b,c)=1.由于要求本质相同,对于a,b,c这样的一个无序的数列且满足gcd(a,b,c)=1,设 ...
- bzoj 3202: [Sdoi2013]项链
Description 项链是人体的装饰品之一,是最早出现的首饰.项链除了具有装饰功能之外,有些项 链还具有特殊显示作用,如天主教徒的十字架链和佛教徒的念珠. 从古至今人们为了美化人体本身,也美 化环 ...
- 洛谷P3307 [SDOI2013]项链 [polya定理,莫比乌斯反演]
传送门 思路 很明显的一个思路:先搞出有多少种珠子,再求有多少种项链. 珠子 考虑这个式子: \[ S3=\sum_{i=1}^a \sum_{j=1}^a\sum_{k=1}^a [\gcd(i,j ...
- [SDOI2013]项链
description luogu 最近,铭铭迷恋上了一种项链.与其他珍珠项链基本上相同,不过这种项链的珠子却与众不同,是正三菱柱的泰山石雕刻而成的. 三菱柱的侧面是正方形构成的,上面刻有数字. 能够 ...
- 洛谷 P3307: bzoj 3202: [SDOI2013] 项链
题目传送门:洛谷P3307.这题在bzoj上是权限题. 题意简述: 这题分为两个部分: ① 有一些珠子,每个珠子可以看成一个无序三元组.三元组要满足三个数都在$1$到$m$之间,并且三个数互质,两个珠 ...
- Luogu3307:[SDOI2013]项链
传送门 求每个珠子的方案数 即有序的求三元组 \((x,y,z),x,y,z\le a\) 满足 \(gcd(x,y,z)=1\) 设 \(G_i\) 表示 \(i\) 个小于等于 \(a\) 的有序 ...
- bzoj 3202 [Sdoi2013]项链——容斥+置换+推式子
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3202 可见Zinn博客:https://www.cnblogs.com/Zinn/p/100 ...
- 洛谷 P3307 - [SDOI2013]项链(Burnside 引理+数论)
题面传送门 看到题目我们显然可以将题目拆分成两部分:首先求出有多少个符合要求的珠子 \(c\),这样我们就可以将每种珠子看成一种颜色,题目也就等价于有多少种用 \(c\) 种颜色染长度为 \(n\) ...
随机推荐
- “找回” Envi 快捷方式
Envi+IDL文件夹挪到别的电脑,不用安装,直接可以使用.但是桌面和开始菜单没有了Envi,IDL,envi+idl的快捷方式,很不方便. 记录一下快捷方式命令行,备用: envi快捷方式 ...
- hosts文件不显示
1.按住windows键(就是小旗子小窗口键)+R,打开运行:2.在输入框中输入 cmd并回车:3.紧接着在dos窗口中输入"CD \WINDOWS\SYSTEM32\DRIVERS\ETC ...
- PAT (Advanced Level) 1094. The Largest Generation (25)
简单DFS. #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> ...
- java项目(java project)如何导入jar包的解决方案列表
右键项目-properties-java build path(左侧菜单)-选择libraries 有两种方式,导入jar包实际上就是建立一种链接,并不是copy式的导入 一.导入外部包,add ex ...
- 完整的 HTML 4 + HTML 5 实体参考手册
1 完整的 HTML 4 + HTML 5 实体参考手册 http://www.runoob.com/charsets/html-charsets.html 1 下表中的所有实体都能在所有的浏览器中正 ...
- JSP内置对象--web安全性及config对象的使用 (了解即可)
tomcat服务器配置的时候,在虚拟目录中必须存在一个WEB-INF文件夹,但是访问的时候并不能发现这个文件夹.改成WEB-INFs就可以看到. 所以WEB-INF文件夹不轻易让用户看到,那么其安全性 ...
- CST 公共生成树
本实验只讨论CST(公共的生成树) 一.实验前先理解生成树决策的4 个步骤: 二.实验拓扑 1. 实验描述: 由于业务的要求,要有可靠的链路,要对链路实现冗余,但链路的冗余有可能给网络带来广播风暴,重 ...
- Ubuntu系统如何修改主机名
1.执行命令 hostname temp_name 这样主机名就改掉了.只不过重启后名字会恢复不一定使我们想要的.机器重启后会重新去读取/etc/hostname里面存储的主机名.所以如果想永久改掉的 ...
- ubuntu 15.04怎么安装QQ
ubuntu 15.04怎么安装QQ | 浏览:468 | 更新:2015-07-21 10:20 1 2 3 4 5 6 7 分步阅读 新装的ubuntu不能没有QQ,我们需要安装QQ来进行及时交流 ...
- mysql安装使用--2 用户管理
1 修改mysql.user表 添加用户 mysql> INSERT INTO mysql.user (Host,User,Password) VALUES (\'%\',\'system\', ...