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. json的命名空间

    <script>var zgz={}; zgz.common={ getByClass: function () { }, myAddEvent: function () { }}; zg ...

  2. maven技术(一)软件安装与配置

    maven技术在研发的过程中,作为资源依赖管理非常出色,例如在Java项目开发过程中,需要各种各样jar包,一般情况下开发者会直接将所用到的jar包放在project的lib目录下,提供自己程序调用. ...

  3. Storm 提交多个流例程

    1.拓扑(Topology): builder.setBolt(TRANSFORM_BOLT, new TransformationBolt(), 1).shuffleGrouping(MY_SPOU ...

  4. 初识Java——循环语句

    循环语句就是在一定条件下反复执行某一个操作.具体有三种方法实现: 1while循环语句 while语句也称作条件判断语句,它的循环方式为利用一个条件来控制是否要反复执行.语法如下: while(条件语 ...

  5. IDEA: 遇到问题Error during artifact deployment. See server log for details解决方法

    1.检查tomcat是否配置正确. 2.检查配置文件是否配置正确,web.xml.等. 3. 4.

  6. 【备忘】Windows的命令行下设置网络代理

    在公司访问网络的时候,需要设置代理,设置浏览器的代理是相当的方便了.但有的时候要使用命令行,就需要自己设置了(貌似只要浏览器设置好了,可以直接使用命令行,但我们公司的借,需要有用户名和密码,如果没有使 ...

  7. Android layout_margin 无效的解决办法

    http://www.aichengxu.com/view/31025 1.如果LinearLayout中使用Android:layout_marginRight不起作用,通过测试原来在android ...

  8. 推荐个Mac OSX下的Code Editor:Atom

    首先只是当Editor用,不是整成IDE级. 先说几个大家耳熟能详的: 1.Sublime,Sublime在Mac下的安装并不完全,CLI启动需要自己ln个链接.还有一些其他原因,比如Packages ...

  9. 关于国际化时报org.springframework.context.NoSuchMessageException错,具体到No message found under code '你的键名' for locale 'zh_CN'.的解决方案

    使用IntelliJ IDEA开发工具解决方案: 总结原因,解决方案: 1,在使用messageSource.getMessage方法时,参数1的键名跟属性文件中键名不一致,比如Controller中 ...

  10. Java Code Style

    近期困惑于团队成员代码风格迥异,代码质量不可控,作为一名老司机,忧患于后期服务的可维护性,多次一对一的代码Review,耗时耗力不说,效果也不明显.痛定思痛,多次反思之后得出结论:无规矩不成方圆,可靠 ...