P4844 LJJ爱数数 数论
思路: 化简后得到(a+b)c=ab,设g=(a,b),A=a/g,B=b/g,则g(A+B)c=ABg^2,即(A+B)c=ABg 由题目已知条件:(a,b,c)=1,即(g,c)=1,g|(A+B)c,故g|(A+B), 设(A+B)/g=AB/c= k ∈ Z, 若k>1,因为A,B互质,所以k|A或k|B,则A+B不能被k整除,矛盾。因此k=1。 故充要条件为:1<=a,b,c<=n,a+b=g^2,c=ab/g^2。 枚举g,则可得A+B=g。用莫比乌斯反演求出一定范围内与g互质的数的个数即可。 写程序的过程中,你会发现,枚举1到sqrt(2n)的g之后,只需枚举g的约数。 所以时间复杂O(sqrt(n)log(sqrt(n)))
题干:
题目描述 PJY某次翻阅杂志时,看到一道题: 求出所有的正整数三元组{a,b,c},满足a,b,c<=n,a,b,c三个数的最大公约数为1,且1/a+/b=/c。 PJY嫌这道题太水,于是把它甩给了爱数数的LJJ,并加上了数据范围n<=1e12,让LJJ数出有多少组满足条件的三元组{a,b,c} (注意当a不等于b时,{a,b,c}和{b,a,c}是不同的三元组,要算两次) LJJ数到一半,发现这个数量太大了,于是他把问题抛给了你。请你输出这个数量。
输入输出格式
输入格式: 输入仅一行:一个正整数n(n<=1e12) 输出格式: 输出仅一行:一个整数,表示满足条件的三元组{a,b,c}的数量
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
template <class T>
void read(T &x)
{
char c;
int op = ;
while(c = getchar(),c > '' || c < '')
if(c == '-') op = ;
x = c - '';
while(c = getchar(),c <= '' && c >= '')
x = x * + c - '';
if(op) x = -x;
}
#define duke(i,a,n) for(register int i = a;i <= n;++i)
#define lv(i,a,n) for(register int i = a;i >= n;--i)
typedef long long ll;
typedef double db;
#define N 1500000
struct node
{
int l,r,nxt;
}a[];
ll n,ans;
int len = ,lst[N + ];
bool che[N + ];
int pri[N + ],tot = ,miu[N + ];
inline void add(int x,int y)
{
a[++len].l = x;
a[len].r = y;
a[len].nxt = lst[x];
lst[x] = len;
}
inline void init()
{
miu[] = ;
duke(i,,N)
{
if(!che[i])
{
pri[++tot] = i;
miu[i] = -;
}
duke(j,,tot)
{
if(i * pri[j] > N) break;
che[i * pri[j]] = ;
if(!(i % pri[j]))
break;
else
miu[pri[j] * i] = -miu[i];
}
}
}
inline int getans(int x,int y)
{
if(y <= ) return ;
int res = ;
for(int k = lst[x];k;k = a[k].nxt)
{
if(a[k].r <= y)
res += miu[a[k].r] * (y / a[k].r);
}
return res;
}
inline ll imax(ll x,ll y)
{
return x > y ? x : y;
}
inline ll imin(ll x,ll y)
{
return x < y ? x : y;
}
int main()
{
init();
for(register int i = ;i <= N;i++)
{
if(miu[i])
{
for(register int j = i;j <= N;j += i)
add(j,i);
}
}
//cout<<tot<<endl;
read(n);ans = ;
for(register int i = ;1ll * i * i <= (n * );i++)
{
int low = (imax(1ll,1ll * i * i - n) - ) / i;
int high = (imin(1ll * i * i - ,n) / i);
ans += (ll)getans(i,high) - (ll)getans(i,low);
//cout<<ans<<endl;
}
printf("%lld\n",ans);
return ;
}
P4844 LJJ爱数数 数论的更多相关文章
- P4844 LJJ爱数数
题目 P4844 LJJ爱数数 本想找到莫比乌斯反演水题练练,结果直接用了两个多小时才做完 做法 \(\sum\limits_{a=1}^n\sum\limits_{b=1}^n\sum\limits ...
- 「LOJ6482」LJJ爱数数
「LOJ6482」LJJ爱数数 解题思路 : 打表发现两个数 \(a, b\) 合法的充要条件是(我不管,我就是打表过的): \[ a + b = \text{gcd}(a, b)^2 \] 设 \( ...
- LJJ爱数数
LJJ爱数数 求\(\sum_{i=1}^n\sum_{j=1}^n\sum_{k=1}^n\epsilon(gcd(i,j,k))(\frac{1}{i}+\frac{1}{j}==\frac{1} ...
- 卡特兰数 Catalan数 ( ACM 数论 组合 )
卡特兰数 Catalan数 ( ACM 数论 组合 ) Posted on 2010-08-07 21:51 MiYu 阅读(13170) 评论(1) 编辑 收藏 引用 所属分类: ACM ( 数论 ...
- [BJOI2019]勘破神机(斯特林数,数论)
[BJOI2019]勘破神机(斯特林数,数论) 题面 洛谷 题解 先考虑\(m=2\)的情况. 显然方案数就是\(f_i=f_{i-1}+f_{i-2}\),即斐波那契数,虽然这里求出来是斐波那契的第 ...
- [HZOI 2016]我们爱数数
[HZOI 2016]我们爱数数 题目大意: 一张圆桌,每个位置按顺时针从\(1\)到\(n\)编号.有\(n\)个人,编号从\(1\)到\(n\).如果编号为\(i\)的人坐到了编号为\(i\)的位 ...
- COJ 0036 数数happy有多少个?
数数happy有多少个? 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 图图是个爱动脑子.观察能力很强的好学生.近期他正学英语 ...
- 【BZOJ】【3530】【SDOI2014】数数
AC自动机/数位DP orz zyf 好题啊= =同时加深了我对AC自动机(这个应该可以叫Trie图了吧……出边补全!)和数位DP的理解……不过不能自己写出来还真是弱…… /************* ...
- BZOJ3530: [Sdoi2014]数数
3530: [Sdoi2014]数数 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 322 Solved: 188[Submit][Status] ...
随机推荐
- [Vijos1067]Warcraft III 守望者的烦恼(DP + 矩阵优化)
传送门 可知 f[i] = f[i - 1] + f[i - 2] + ... + f[i - k] 直接矩阵优化就好了 #include <cstdio> #include <cs ...
- CodeForces - 743B Chloe and the sequence
暴力肯定是无法做的 当时做的时候 当成一道递推来做的 用到分治的思想 想象一串长度为2n+1的列 那么前n个为前一串数 后n个是前一串数的reverse 第n+1个数 为第几串的编号 例如 第几串 中 ...
- 【BZOJ1237】配对(贪心,DP)
题意:有n个a[i]和b[i],调整顺序使abs(a[i]-b[i])之和最小,但a[i]<>b[i].保证所有 Ai各不相同,Bi也各不相同. 30%的数据满足:n <= 104 ...
- Java操作XML牛逼利器JDOM&DOM4J
JDOM JDOM 是一种使用 XML(标准通用标记语言下的一个子集) 的独特 Java 工具包,用于快速开发 XML 应用 程序. JDOM 官方网站:http://www.jdom.org/ 利 ...
- 学习日常笔记<day16>mysql加强
1.数据约束 1.1什么是数据约束 对用户操作表的数据进行约束 1.2 默认值 作用:当永辉对使用默认值的字段不插入值的时候,就使用默认值 注意: 1)对默认值字段插入null是可以的 2)对默认值字 ...
- java基础语法1
一:基础语法之--标识符,修饰符,关键字 1.标识符: 定义:类名.变量名以及方法名都被称为标识符.自定义的名字. 注意: ·所有的标识符都应该以字母(A-Z或者a-z),美元符($).或者下划线(_ ...
- Spring Data JPA 入门篇
Spring Data JPA是什么 它是Spring基于ORM框架(如hibernate,Mybatis等).JPA规范(Java Persistence API)封装的一套 JPA应用框架,可使开 ...
- POJ2573 Bridge 经典的过桥问题
曾经遇到过类似的.纪念一下!这题同一时候也是 ZOJ1877.经典的过桥问题 是有个博客解说的非常好的 戳这里 挺久曾经.遇到过一个基本一样的,那个题目仅仅要求求出 最短时间就可以,如今还有过桥的过 ...
- Office WORD如何去掉目录的背景灰色
有人说鼠标点击空白的地方灰色就自动散掉了,但是我点击并没有散掉 鼠标选中有灰色背景的文字,点击格式-边框和底纹,点击无填充颜色,并应用于文字. O了
- nagios 安装配置(包含nrpe端)全 (三)
四.系统的配置: 1.介绍 在配置过程中涉及到的几个定义有:主机.主机组,服务.服务组.联系人.联系人组,监控时间.监控命令等. 最重要的有四点: 第一:定义监控哪些主机.主机组.服务和服务组: 第二 ...