【BZOJ2671】Calc

Description

  给出N,统计满足下面条件的数对(a,b)的个数:
  1.1<=a<b<=N
  2.a+b整除a*b

Input

 一行一个数N

Output

 一行一个数表示答案

Sample Input

15

Sample Output

4

HINT

数据规模和约定
N <=2^31-1

题解:玄学数学题,推导过程不难但很扯,直接上式子:

设d=gcd(a,b),则$a+b|ab$->$a'd+b'd|a'b'd^2$->$a'+b'|a'b'd$->$a'+b'|d$。

问题就变成了问你有多少个数对(a,b)满足a与b互质且$(a+b)d\le n$,$a+b|d$,又因为d>b所以b最多只能是$\sqrt n$。我们将其形式化的写出来:设$m=\sqrt n$

$\sum\limits_{b=1}^m\sum\limits_{a=1}^{b-1}[gcd(a,b)==1]\lfloor{n\over a+b}\rfloor$

反演一波$\sum\limits_{d=1}^m\mu(d)\sum\limits_{b=1}^{\lfloor {m\over d}\rfloor}\sum\limits_{a=1}^{b-1}\lfloor{n\over d^2(a+b)}\rfloor$

你敢相信。。。推到这就能A了吗?复杂度什么的见鬼去吧~

#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=100010;
ll n,m,ans;
int num;
int np[N],pri[N],mu[N];
inline ll calc(int n,int m)
{
ll ret=0;
int i,j,t,last;
//for(i=1;i<=m;i++) for(j=1;j<i;j++) ret+=n/i/(i+j);
//return ret;
for(i=1;i<=m;i++)
{
t=n/i;
for(j=i+1;j<(i<<1)&&j<=t;j=last+1)
{
last=min((i<<1)-1,t/(t/j));
ret+=1ll*(last-j+1)*(t/j);
}
}
return ret;
}
ll gcd(ll a,ll b)
{
return !b?a:gcd(b,a%b);
}
int main()
{
scanf("%lld",&n),m=sqrt(n);
int i,j;
ll last;
mu[1]=1;
//for(i=1;i<=m;i++) for(j=1;j<i;j++) if(gcd(i,j)==1) ans+=n/i/(i+j);
//printf("%lld\n",ans),ans=0;
for(i=2;i<=m;i++)
{
if(!np[i]) pri[++num]=i,mu[i]=-1;
for(j=1;j<=num&&i*pri[j]<=m;j++)
{
np[i*pri[j]]=1;
if(i%pri[j]==0) break;
mu[i*pri[j]]=-mu[i];
}
}
for(i=1;i<=m;i++) last=calc(n/i/i,m/i),ans+=mu[i]*last;
printf("%lld",ans);
return 0;
}

【BZOJ2671】Calc 数学的更多相关文章

  1. BZOJ2671 Calc 【莫比乌斯反演】

    题目链接 BZOJ2671 题解 令\(d = (a,b)\),\(a = dx,b = dy\) 那么有 \[ \begin{aligned} d(x + y) | d^2xy \\ (x + y) ...

  2. BZOJ2671 Calc(莫比乌斯反演)

    两个多月之前写的题,今天因为看到一道非常相似的题就翻出来了,发现完全不会,没救. 感觉这个题其实第一步是最难想到的,也是最重要的. 设d=gcd(a,b).那么a=yd,b=xd,且gcd(x,y)= ...

  3. BZOJ2671 : Calc

    设$d=\gcd(a,b),a=xd,b=yd$,则$a+b|ab$等价于$x+y|xyd$. 因为$x,y$互质,所以$x+y|d$. 假设$x<y$,那么对于固定的$x,y$,有$\lflo ...

  4. CSS当中数学表达式calc

    CSS当中数学表达式calc  数学表达式calc()是CSS中的函数,主要用于数学运算.使用calc()为页面元素布局提供了便利和新的思路.本文将介绍calc()的相关内容 定义 数学表达式calc ...

  5. 常用的Css函数

    1. attr() 用来选择元素的属性值,用法:attr(html元素的属性名),正常搭配css content一起使用 html: <p><a href="http:// ...

  6. 理解CSS中的数学表达式calc()

    前面的话 数学表达式calc()是CSS中的函数,主要用于数学运算.使用calc()为页面元素布局提供了便利和新的思路.本文将介绍calc()的相关内容 定义 数学表达式calc()是calculat ...

  7. css3 calc():css简单的数学运算-加减乘除

    css3 calc():css简单的数学运算–加减乘除 多好的东西啊,不用js,一个css就解决了. .box{ border:1px solid #ddd; width:calc(100% - 10 ...

  8. css中的数学表达式calc()

    前言 数学表达式calc()是CSS中的函数,主要用于数学运算.使用calc()为页面元素布局提供了便利和新的思路. 概念 数学表达式calc()是calculate计算的缩写,它允许使用+.-.*. ...

  9. 【BZOJ2671】Calc(莫比乌斯反演)

    [BZOJ2671]Calc 题面 BZOJ 给出N,统计满足下面条件的数对(a,b)的个数: 1.\(1\le a\lt b\le N\) 2.\(a+b\)整除\(a*b\) 我竟然粘了题面!!! ...

随机推荐

  1. (转)Unity3D - 动作动画忽略timeScale

    转自:http://blog.csdn.net/ynnmnm/article/details/46866347 最近在调战斗时的动画与特效,Unity3D对加/减速提供了Time.timeScale支 ...

  2. AI通过了艺术创作图灵测试,你根本分不出来作者是不是人

    各位geek朋友们,今年不用再看画了:近年来最大的艺术成就已经发生了. 这项艺术成就的诞生地,不是北京.新加坡.柏林郊区颜料四溅的画室中,不是威尼斯双年展上.请记住它出现的地点:美国新泽西州新布朗斯维 ...

  3. ffmpag总结_android_to_ios视频转换

    项目需求: 需要android和ios拍的视频在两个平台上都能播放. ffmpag很早以前就安装好了,忘了是如何装了. 一直无法将android同事的视频转成mp4在ios上播放. 后来发现ffmpa ...

  4. hihocoder第238周:杨氏矩阵的个数

    题目链接 问题描述 给定一个N行M列的矩阵,往里面填入$1-N\times M$个数字,使得这个矩阵每行.每列都满足递增.问:有多少种填法? 问题分析 这个问题很难,如果能够直接想到,那就是天才了. ...

  5. 学习下知然网友写的taskqueue

    博主在他的博客里对taskqueue的各种使用情况和使用方法都介绍的很清楚:http://www.cnblogs.com/zhiranok/archive/2013/01/14/task_queue. ...

  6. sklearn:Python语言开发的通用机器学习库

    引言:深入理解机器学习并全然看懂sklearn文档,须要较深厚的理论基础.可是.要将sklearn应用于实际的项目中,仅仅须要对机器学习理论有一个主要的掌握,就能够直接调用其API来完毕各种机器学习问 ...

  7. 浅谈 OpenResty

    一.前言 我们都知道Nginx有很多的特性和好处,但是在Nginx上开发成了一个难题,Nginx模块需要用C开发,而且必须符合一系列复杂的规则,最重要的用C开发模块必须要熟悉Nginx的源代码,使得开 ...

  8. JAVA(五)反射机制/Annotation

    成鹏致远 | lcw.cnblog.com |2014-02-04 反射机制 1.认识Class类 在正常情况下,必须知道一个类的完整路径之后才可以实例化对象,但是在 java中也允许通过一个对象来找 ...

  9. Selenium Web 自动化 - 项目实战(一)

    Selenium Web 自动化 - 测试框架(一) 2016-08-05 目录 1 框架结构雏形2 把Java项目转变成Maven项目3 加入TestNG配置文件4 Eclipse编码修改5 编写代 ...

  10. 20款有用的JavaScript和CSS库

    Web开发与设计已经发展达到了新的高峰.创建一个网站并不是那么简单了,因为它使用的是几年前.今天是时间创造有吸引力的网站,不仅吸引了游客的关注也让他们订婚.另外,和功能的有吸引力的功能添加到该网站不应 ...