2816. Troywar loves Maths

                ★★☆   输入文件:Troy_1.in   输出文件:Troy_1.out   简单对比
                        时间限制:1 s   内存限制:256 MB

【题目描述】

众所周知,Troywar总是不好好上课看数(xiao)论(shuo)。一天数学老师是在看不下去了,于是决定考(jiao)考(xun)他一下。于是,扔给了Troywar一个问题:给定两个正整数n和m,有多少对1<=i<=n,1<=j<=m使得$a=2^{i}+1,b=2^{j}+1$满足a和b的最大公约数为3。翘课的Troywar当然不会了,他只好求助你。

【输入格式】

两个正整数n,m

【输出格式】

一个整数。

【样例输入】

10 10

【样例输出】

19

【数据范围】

1.10% n,m<=63

2.另有20%数据保证n,m<=1000

3.另有20%数据保证n<=3

4.对于所有数据,保证n,m<=1e7

【来源】

Troywar

题解:

   第一次出题,也不知道有没有人做……我们先把n调成n,m中小的,m为较大的。

$\sum_{i=1}^{n}\sum_{j=1}^{m}[\gcd(2^{i}+1,2^{j}+1)==3]$

$首先,我们的要求是3|2^{x}+1$
$2^x+1\equiv 2^{x\,\bmod \phi(3)}+1(\bmod)3$
$所以当x为奇数时才可能成立,先令i>j$

$\;\;\;\;\gcd(2^{i}+1,2^{j}+1)=\gcd(2^{i}-2^{j},2^j+1)$
$=\gcd(2^{i-j}-1,2^j+1)$
$=\gcd (2^{i-j}+2^j,2^j+1)$

$若i-j>j$
$\gcd(2^{i}+1,2^{j}+1)=\gcd(2^{i-2j}+1,2^j+1)$
$否则$
$\gcd(2^{i}+1,2^{j}+1)=\gcd(2^{2j-i}+1,2^j+1)$
$联系辗转相除$
$\gcd(2^{i}+1,2^{j}+1)=2^{\gcd(i,j)}+1$
$所以有gcd(i,j)==1且i、j为奇数$

$\therefore Ans=\sum_{i=1}^{n}\sum_{j=1}^{m}[\gcd(i,j)==1\&i、j为奇数] $

$=\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)==1]-\sum_{i=1}^{\lfloor \frac n 2\rfloor}\sum_{j=1}^{m}[gcd(i,j)==1]-\sum_{i=1}^{\lfloor \frac m 2\rfloor}\sum_{j=1}^{n}[gcd(i,j)==1]$

$=\sum_{d=1}^{n}\mu(d)\lfloor \frac m d\rfloor\lfloor \frac n d\rfloor-\sum_{d=1}^{n}\mu(d)\lfloor \frac m d\rfloor\lfloor \frac n {kd}\rfloor-\sum_{d=1}^{n}\mu(d)\lfloor \frac m {kd}\rfloor\lfloor \frac n d\rfloor$

$其中当d为奇数时,k为2,否则k为1$

  对于前10%是为了给暴力分……至于n<=3是为了打表找规律,再结合前10%验证。n,m小于1000……当作给不会反演的分吧……

标程:

  

 #define Troy 09/29/2017

 #include<bits/stdc++.h>

 using namespace std;

 typedef long long ll;

 const int N=1e7+;

 int miu[N],prim[N/],num,sum[N];
bool vis[N]; inline void init(){
miu[]=;
sum[]=;
for(int i=;i<N;i++){
if(!vis[i])
prim[++num]=i,miu[i]=-;
for(int j=;prim[j]*i<N;j++){
vis[i*prim[j]]=;
if(i%prim[j]==){
miu[i*prim[j]]=;
break;
}
miu[i*prim[j]]=-miu[i];
}
sum[i]=sum[i-]+miu[i];
}
} int n,m; int main(){ init();
freopen("Troy_1.in", "r", stdin);
freopen("Troy_1.out","w",stdout);
scanf("%d%d",&n,&m);
if(n>m) n^=m^=n^=m;
ll ans=;
for(int i=;i<=n;i++){
ll t=1ll*miu[i]*(n/i)*(m/i),d;
if(i&){
d=1ll*miu[i]*(1ll*(n/i)*(m/i/)+1ll*(n/i/)*(m/i));
}
else
d=1ll**miu[i]*(n/i)*(m/i);
ans+=t-d;
}
printf("%lld\n",ans);
}

【Troywar love Maths】——莫比乌斯反演的更多相关文章

  1. BZOJ3309 DZY Loves Maths 莫比乌斯反演、线性筛

    传送门 推式子(默认\(N \leq M\)): \(\begin{align*} \sum\limits_{i=1}^N \sum\limits_{j=1}^Mf(gcd(i,j)) & = ...

  2. hdu1695 GCD(莫比乌斯反演)

    题意:求(1,b)区间和(1,d)区间里面gcd(x, y) = k的数的对数(1<=x<=b , 1<= y <= d). 知识点: 莫比乌斯反演/*12*/ 线性筛求莫比乌 ...

  3. BZOJ 2154: Crash的数字表格 [莫比乌斯反演]

    2154: Crash的数字表格 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 2924  Solved: 1091[Submit][Status][ ...

  4. BZOJ2301: [HAOI2011]Problem b[莫比乌斯反演 容斥原理]【学习笔记】

    2301: [HAOI2011]Problem b Time Limit: 50 Sec  Memory Limit: 256 MBSubmit: 4032  Solved: 1817[Submit] ...

  5. Bzoj2154 Crash的数字表格 乘法逆元+莫比乌斯反演(TLE)

    题意:求sigma{lcm(i,j)},1<=i<=n,1<=j<=m 不妨令n<=m 首先把lcm(i,j)转成i*j/gcd(i,j) 正解不会...总之最后化出来的 ...

  6. 莫比乌斯函数筛法 & 莫比乌斯反演

    模板: int p[MAXN],pcnt=0,mu[MAXN]; bool notp[MAXN]; void shai(int n){ mu[1]=1; for(int i=2;i<=n;++i ...

  7. 【BZOJ-2440】完全平方数 容斥原理 + 线性筛莫比乌斯反演函数 + 二分判定

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2371  Solved: 1143[Submit][Sta ...

  8. POI2007_zap 莫比乌斯反演

    题意:http://hzwer.com/4205.html 同hdu1695 #include <iostream> #include <cstring> #include & ...

  9. hdu.5212.Code(莫比乌斯反演 && 埃氏筛)

    Code Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submi ...

随机推荐

  1. MOOS学习笔记4——独立线程不同回调

    MOOS学习笔记4--独立线程不同回调 /** * @fn 独立线程不同回调 * @version v1.0 * @author */ #include "MOOS/libMOOS/Comm ...

  2. M1卡区块控制位详解

    M1卡区块控制位详解 Mifare 1S50/Mifare 1S70 每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取 控制.存取控制为4个字节,共32位,扇区中的每个块(包括 ...

  3. Android 加载gif图片强大框架(支持预加载、缓存,还支持显示静态图片,一行代码全搞定)

    之前项目中没有涉及到显示gif图片的功能,也没有着重研究过,最近项目中要用到显示gif图片,于是就在网上一顿搜,用过之后发现如下几个缺点. 1.加载大的gif图片会出现oom. 2.没有预加载和缓存功 ...

  4. SVN服务器搭建和配置使用详解

    SVN服务器搭建和使用(一) Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上 ...

  5. Java框架数据库连接池比较 [转贴 2010-3-20 9:57:51]

    现在常用的开源数据连接池主要有c3p0,dbcp和proxool三种,其中: ¨hibernate开发组推荐使用c3p0; ¨spring开发组推荐使用dbcp (dbcp连接池有weblogic连接 ...

  6. Qt与FFmpeg联合开发指南(三)——编码(1):代码流程演示

    前两讲演示了基本的解码流程和简单功能封装,今天我们开始学习编码.编码就是封装音视频流的过程,在整个编码教程中,我会首先在一个函数中演示完成的编码流程,再解释其中存在的问题.下一讲我们会将编码功能进行封 ...

  7. 公司内网搭建代理DNS使用内网域名代替ip地址

    企业场景 一般在企业内部,开发.测试以及预生产都会有一套供开发以及测试人员使用的网络环境.运维人员会为每套环境的相关项目配置单独的Tomcat,然后开放一个端口,以 IP+Port 的形式访问.然而随 ...

  8. IEEE发布2017年编程语言排行榜:Python高居首位

    https://news.cnblogs.com/n/574248 编者按:本文由微信公众号“机器之心”(ID:almosthuman2014)编译,机器之心专注生产 AI 领域专业性内容.本文作者: ...

  9. JAVAEE——BOS物流项目13:Quartz入门案例、核心概念、cron 表达式的格式(了解)

    1.quartz入门案例 本入门案例基于spring和quartz整合完成. 第一步:创建maven工程,导入spring和quartz相关依赖 第二步:创建任务类 第三步:在spring配置文件中配 ...

  10. C语言出来多久了你知道吗?

    在20世纪80年代,为了避免不同开发者使用的C语言语法的差异,美国国家标准局为C语言开发了一套完整的美国国家标准语言文法,称为ANSI C,作为C语言的初始标准.. [1] 2011年12月8日,国际 ...