51nod 1675 序列变换 (简单莫比乌斯)
来源:互联网 发布:云管理平台软件 编辑:程序博客网 时间:2024/06/13 23:35
lyk有两序列a和b。
lyk想知道存在多少对x,y,满足以下两个条件。
1:gcd(x,y)=1。
2: abxabx = baybay 。
例如若a={1,1,1},b={1,1,1}。那么存在7对,因为除了x=2,y=2或x=3,y=3外都满足条件。
Input
第一行一个数n(1<=n<=100000)。
接下来一行n个数,表示ai(1<=ai<=n)。
接下来一行n个数,表示bi(1<=bi<=n)。
Output
一行表示答案
Sample Input
3
1 1 1
1 1 1
Sample Output
7
就是利用莫比乌斯求出gcd=1的种数,难点在于ologn的统计吧,直接利用莫比乌斯跳就好,因为值不超过1e5
#include <bits/stdc++.h>using namespace std;const int N = 1e5+10;typedef long long ll;int a[N],b[N];int viss[N];int n;bool vis[N+10]; int prime[N+10],mu[N+10]; int cnt;void Init(){ memset(prime,0,sizeof(prime)); memset(mu,0,sizeof(mu)); memset(vis,0,sizeof(vis)); mu[1] = 1; cnt = 0; for(int i=2; i<N; i++){ if(!vis[i]){ prime[cnt++] = i; mu[i] = -1; } for(int j=0; j<cnt&&i*prime[j]<N; j++){ vis[i*prime[j]] = 1; if(i%prime[j]) mu[i*prime[j]] = -mu[i]; else{ mu[i*prime[j]] = 0; break; } } }}ll cal(int x){ ll res=0; for(int i=x;i<=n;i+=x) viss[a[b[i]]]++; for(int i=x;i<=n;i+=x) res+=viss[b[a[i]]]; for(int i=x;i<=n;i+=x) viss[a[b[i]]]--; return res;}int main(){ Init(); scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) scanf("%d",&b[i]); ll res=0; for(int i=1;i<=n;i++) { res+=1ll*mu[i]*cal(i); } printf("%lld\n",res );}
阅读全文
0 0
- 51nod 1675 序列变换 (简单莫比乌斯)
- 51nod 1675 序列变换 莫比乌斯反演
- 51nod 1675 序列变换 莫比乌斯反演
- 51nod 1675 序列变换(莫比乌斯反演)
- 51nod 1675 序列变换 莫比乌斯反演(第二种形式)
- 51nod 欢乐手速场1(迎新春)-B序列变换(莫比乌斯反演)
- 51nod 序列变换 [容斥原理+莫比乌斯函数]【数论+组合数学】
- 51Nod-1675-序列变换
- 51nod 1675 序列变换
- 【51NOD 1675】序列变换
- 51Nod 1675 莫比乌斯反演
- 51nod--1240莫比乌斯函数 (数论)
- 莫比乌斯函数(51nod-1240)
- 51nod点头网-1240 莫比乌斯函数
- 51nod 1240 莫比乌斯函数
- 51Nod-1240-莫比乌斯函数
- 51nod:1240 莫比乌斯函数
- 51nod-1240莫比乌斯函数
- 爬虫
- 手写spring ioc框架
- 欢迎使用CSDN-markdown编辑器
- Codeforces559C/51nod1486【DP组合数】
- 试验
- 51nod 1675 序列变换 (简单莫比乌斯)
- 深入理解Java虚拟机——JVM类加载机制(类加载过程和类加载器)
- 电阻 电容 并联电路
- 国是怎么落后的---封建思想的存在,一个家为单位的,也是一个私立的
- UVA.12230 Crossing Rivers (期望)
- 【LeetCode】最长括号匹配Longest Valid Parentheses
- 《MySQL入门很简单》学习笔记(11)之第11章插入、更新与删除数据(关键词:数据库/MySQL/插入数据/更新数据/删除数据)
- struts2笔记(1)——搭建一个HelloWorld
- ARCore:从Android Studio开始