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. Binary Tree Zigzag Level Order Traversal(z字形打印二叉树)

    Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...

  2. org.eclipse.swt.SWTException: Invalid thread access问题解决方法

    转自 http://blog.csdn.net/ecjtuxuan/article/details/2125023 怎么解决SWT多线程错误:Caused by: org.eclipse.swt.SW ...

  3. java并发容器(Map、List、BlockingQueue)

    转发: 大海巨浪 Java库本身就有多种线程安全的容器和同步工具,其中同步容器包括两部分:一个是Vector和Hashtable.另外还有JDK1.2中加入的同步包装类,这些类都是由Collectio ...

  4. linux利用命令重置大量密码

     yum -y install expectmkpasswd -l 10 -v was | grep 'is *'  >> 123.txtmkpasswd -l 10 -v logv |  ...

  5. C++ 延时等待(sleep/timer/wait)

    原文链接:http://blog.csdn.net/tangweide/article/details/7063747 (-)使用_sleep()函数 #include <iostream> ...

  6. 转载《分布式任务调度平台XXL-JOB》

    <分布式任务调度平台XXL-JOB>       博文转自 https://www.cnblogs.com/xuxueli/p/5021979.html 一.简介 1.1 概述 XXL-J ...

  7. 和同门一起做的PHP网站

    用的是PHP语言开发,使用ThinkPHP框架,数据库是mysql  统计是用的站长统计,前端很多都是别人网 上扒下来的.css.js水平不高啊.服务器是香港恒创科技的,性价比还可以哦,而且还免备案. ...

  8. 关于DataSet中Relations的应用

    using System; using System.Collections.Generic; using System.Text; using System.Data; namespace conn ...

  9. Http协议、Tomcat、servlet

    HTTP协议 Http,超文本传输协议是互联网上最广泛的一种网络协议,所有的www文件都必须遵守这个标准. Http协议由http请求和http响应组成 http请求: 1.请求行 请求方式 POST ...

  10. Java MD5加密与RSA加密

    区别: MD5加密: 加密时通过原字符串加密成另一串字符串 解密时需要原加密字符串进行重新加密比较两次加密结果是否一致 T=RSA加密: 加密时通过原字符串生成密钥对(公钥+私钥) 解密时通过公钥和私 ...