题意:给n,m,求出

思路:题意为求出1~m所有数和n的gcd之和。显然gcd为n的因数。我们都知道gcd(a,b)= c,那么gcd(a/c,b/c)= 1。也就是说我们枚举n所有的因数k,然后去找1~m/k中和n/k互质的个数就是gcd为k的个数。这个直接容斥就行。

代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<stdio.h>
#include<string.h>
#include<queue>
#include<cmath>
#include<map>
#include<set>
#include<vector>
using namespace std;
#define inf 0x3f3f3f3f
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define mem(a,b) memset(a,b,sizeof(a));
#define lowbit(x) x&-x;
typedef long long ll;
typedef unsigned long long ull;
const double eps = 1e-;
const int maxn = 1e5+;
const ll mod = 1e8+;
ll prime[maxn], p[maxn], pn;
void init(){
pn = ;
memset(prime, , sizeof(prime));
for(ll i = ; i < maxn; i++){
if(!prime[i]){
p[pn++] = i;
for(ll j = i * i; j < maxn; j += i)
prime[j] = ;
}
}
}
ll y[maxn], tot;
ll solve(ll r, ll n){ //返回1~r和n的gcd为1个数
tot = ;
ll N = n;
for(int i = ; p[i] * p[i] <= N && i < pn; i++){
if(N % p[i] == ){
y[tot++] = p[i];
while(N % p[i] == )
N /= p[i];
}
}
if(N > ) y[tot++] = N;
ll num = ;
for(ll i = ; i < ( << tot); i++){
ll val = , times = ;
for(ll j = ; j < tot; j++){
if(( << j) & i){
times++;
val *= y[j];
}
}
if(times & ){
num += r / val;
}
else{
num -= r / val;
}
}
return r - num;
} int main(){
ll n, m, num, ans = , cnt = , temp;
init();
scanf("%lld%lld", &n, &m);
for(ll i = ; i <= sqrt(n); i++){
if(n % i == ){
num = solve(m / i, n / i);
ans += num * i;
cnt += num;
if(i * i != n){
temp = n / i;
num = solve(m / temp, n / temp);
ans += num * temp;
cnt += num;
}
}
}
num = solve(m / n, );
ans += num * n;
cnt += num;
ans += m - cnt;
printf("%lld\n", ans);
return ;
}

FJUT3565 最大公约数之和(容斥)题解的更多相关文章

  1. [SDOI2009]Bill的挑战——全网唯一 一篇容斥题解

    全网唯一一篇容斥题解 Description Solution 看到这个题,大部分人想的是状压dp 但是我是个蒟蒻没想到,就用容斥切掉了. 并且复杂度比一般状压低, (其实这个容斥的算法,提出来源于y ...

  2. 51nod部分容斥题解

    51nod1434 区间LCM 跟容斥没有关系.首先可以确定的一个结论是:对于任意正整数,有1*2*...*n | (k+1)*(k+2)*...*(k+n).因为这就是$C_{n+k}^{k}$. ...

  3. 【UOJ#422】【集训队作业2018】小Z的礼物(min-max容斥,轮廓线dp)

    [UOJ#422][集训队作业2018]小Z的礼物(min-max容斥,轮廓线dp) 题面 UOJ 题解 毒瘤xzy,怎么能搬这种题当做WC模拟题QwQ 一开始开错题了,根本就不会做. 后来发现是每次 ...

  4. 洛谷P4707 重返现世(扩展MinMax容斥+dp)

    传送门 我永远讨厌\(dp.jpg\) 前置姿势 扩展\(Min-Max\)容斥 题解 看纳尔博客去→_→ 咱现在还没搞懂为啥初值要设为\(-1\)-- //minamoto #include< ...

  5. 【题解】Counting D-sets(容斥+欧拉定理)

    [题解]Counting D-sets(容斥+欧拉定理) 没时间写先咕咕咕. vjCodeChef - CNTDSETS 就是容斥,只是难了一二三四五\(\dots \inf\)点 题目大意: 给定你 ...

  6. 【题解】CF559C C. Gerald and Giant Chess(容斥+格路问题)

    [题解]CF559C C. Gerald and Giant Chess(容斥+格路问题) 55336399 Practice: Winlere 559C - 22 GNU C++11 Accepte ...

  7. [CQOI2014]数三角形 题解(组合数学+容斥)

    [CQOI2014]数三角形 题解(数论+容斥) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1328780 链接题目地址:洛谷P3166 BZOJ 350 ...

  8. 【题解】毒蛇越狱(FWT+容斥)

    [题解]毒蛇越狱(FWT+容斥) 问了一下大家咋做也没听懂,按兵不动没去看题解,虽然已经晓得复杂度了....最后感觉也不难 用FWT_OR和FWT_AND做一半分别求出超集和和子集和,然后 枚举问号是 ...

  9. 【题解】[HAOI2018]染色(NTT+容斥/二项式反演)

    [题解][HAOI2018]染色(NTT+容斥/二项式反演) 可以直接写出式子: \[ f(x)={m \choose x}n!{(\dfrac 1 {(Sx)!})}^x(m-x)^{n-Sx}\d ...

随机推荐

  1. <3>lua字符串

    1.字符串 <1>字符串相连/加法   .. local str = "abc" str = str .. 7 --字符串与数字相连 print(str) --abc7 ...

  2. 超简单系列:ubuntu 13.04 安装 apache2.2+mod_wsgi+Django

    1,Ubuntu更新系统 sudo apt-get update sudo apt-get upgrade 2,安装apache,mod_wsgi,Django sudo apt-get instal ...

  3. 【转】通过Excel生成批量SQL语句,处理大量数据

    经常会遇到这样的要求:用户给发过来一些数据,要我们直接给存放到数据库里面,有的是Insert,有的是Update等等,少量的数据我们可以采取最原始的办法,也就是在SQL里面用Insert into来实 ...

  4. CocoaPod 问题(I)

    问题一 报错:_OBJC_CLASS_$_ 方案:https://blog.csdn.net/duxinfeng2010/article/details/8265273 问题二: [!] Oh no, ...

  5. git log的常见用法

    git log 使用git log命令,什么参数都没有的话,会以下面的格式输出所有的日志(我当前的git仓库只有三个提交).如果日志特别多的话,在git bash中,按向下键来查看更多,按q键退出查看 ...

  6. BUAA 111 圆有点挤

    题目描述 gg最近想给女友送两个精美的小礼品:两个底面半径分别为R1和R2的圆柱形宝石,并想装在一个盒子里送给女友. 好不容易找到了一个长方体的盒子,其底面为A*B的矩形,他感觉好像宝石装不进去,但又 ...

  7. EF使用sql语句

    https://www.cnblogs.com/chenwolong/p/SqlQuery.html https://blog.csdn.net/zdhlwt2008/article/details/ ...

  8. sparkStrming 实时插入 mysql 今天使用echart 实现了简单数据展示 很low 但学习必须加深

  9. 大数据自学3-Windows客户端DbVisualizer/SQuirreL配置连接hive

    前面已经学习了将数据从Sql Server导入到Hive DB,并在Hue的Web界面可以查询,接下来是配置客户端工具直接连Hive数据库,常用的有DbVisualizer.SQuirreL SQL ...

  10. 从源码层面聊聊面试问烂了的 Spring AOP与SpringMVC

    Spring AOP ,SpringMVC ,这两个应该是国内面试必问题,网上有很多答案,其实背背就可以.但今天笔者带大家一起深入浅出源码,看看他的原理.以期让印象更加深刻,面试的时候游刃有余. Sp ...