[NOIP普及组2001]最大公约数和最小公倍数问题
题目名称:最大公约数和最小公倍数问题
来源:2001年NOIP普及组
链接
博客链接
题目链接
题目内容
题目描述
输入二个正整数\(x_0,y_0(2\leq x_0\leq100000,2\leq y_0\leq1000000)\),求出满足下列条件的\(P、Q\)的个数。
条件:
- \(P、Q\)是正整数
- 要求\(P、Q\)以\(x_0\)为最大公约数,以\(y_0\)为最小公倍数。
试求,满足条件的所有可能的两个正整数的个数。
格式
输入
\(2\)个正整数\(x_0\),\(y_0\)
输出
\(1\)个数,表示求出满足条件的\(P\),\(Q\)的个数
数据
样例
输入
3 60
输出
4
说明
\(P,Q\)有\(4\)种
- \(3,60\)
- \(15,12\)
- \(12,15\)
- \(60,3\)
数据范围
\(2\leq x_0\leq100000,2\leq y_0\leq1000000\)
题解
约定\(D=min(x_0,y_0),M=max(x_0,y_0)\)
情况1:
\(M \mod D\neq0\)
显然,无解。
情况2:
\(M \mod D=0\)
推一波
\therefore P\times Q=(P,Q)[P,Q]=D\times M\\
p=P\div D,q=Q\div D,prod=D\div M\\
\therefore p\times q=prod\&(p,q)=1\\
\]
当然,暴力枚举\(p\)就可以通过此题,时间复杂度\(O(\sqrt{prod}\times \log(\sqrt{prod}))\)。
但是这次笔者要将一个更优的解法。
由推出来的式子可得,我们就要求有多少对\(prod\)的因数互质。
现将\(prod\)分解质因子得到\(prod\)有\(n\)种质因子。
对于质因子\(d\),要么只是\(p\)的质因子,要么只是\(q\)的质因子(如果\(p\)和\(q\)同时拥有这个质因子\(d\),那么\((p,q)\neq 1\)),并且\(d\)至少要是其中一个的因数(否则\(p\times q\neq prod\))。
所以说其中每种质因子都有两种可能,则答案是\(2^n\)。
时间复杂度\(O(玄学)\),(最坏\(O(\sqrt{prod})\),最好\(O(\log(prod))\))
//C++
#include<bits/locale_facets.h>
#include<stdio.h>
#define forto(name,i,d,u) for(name i=d;i<=u;i++)
inline void output(long long o);
inline long long input();
int main()
{
short numeral=0;
int x=input(),y=input();
if(y%x)return putchar('0'),0;
y/=x;
forto(int,i,2,y/i)
if(!(y%i))
{
numeral++;
while(!(y%i))y/=i;
}
if(y>1)numeral++;
output(1<<numeral);
return 0;
}
inline void output(long long o)
{
if(o<0)putchar('-'),o=-o;
if(o>=10)output(o/10);
putchar(o%10^'0');
}
inline long long input()
{
bool minus=false;
char now=getchar();
long long i=0;
for(;!isdigit(now);now=getchar())
if(now=='-')minus=!minus;
for(;isdigit(now);now=getchar())i=(i<<3)+(i<<1)+(now^'0');
return minus?-i:i;
}
//pascal
var
numeral:1..30;
x:2..100000;
i,y:1..1000000;
begin
readln(x,y);
if y mod x>0 then
begin
write('0');
halt;
end;
y:=y div x;
i:=2;
while i<=y div i do
begin
if y mod i=0 then
begin
inc(numeral);
while y mod i=0 do y:=y div i;
end;
inc(i);
end;
if y>1 then inc(numeral);
write(1 shl numeral);
end.
[NOIP普及组2001]最大公约数和最小公倍数问题的更多相关文章
- 【NOIP2001普及组】最大公约数和最小公倍数问题
P1029 最大公约数和最小公倍数问题 最大公约数用辗转相除法: 最小公倍数:两个数的乘积=他们的最大公约数*最小公倍数,既然两个数的乘积及其最大公约数已知,那么最小公倍数也可以求了. #includ ...
- 2321. 【NOIP普及组T1】方程
2321. [NOIP普及组T1]方程 时间限制: 1000 ms 空间限制: 262144 KB 题目描述
- [NOIP普及组2011]装箱问题
目录 链接 博客链接 题目链接 题目内容 题目描述 格式 输入 输出 样例 输入 输出 前缀知识 题解 题目名称:装箱问题 来源:2011年NOIP普及组 链接 博客链接 CSDN 洛谷博客 题目链接 ...
- 2016.8.15上午纪中初中部NOIP普及组比赛
2016.8.15上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1333 这次比赛不怎么好,因为这套题目我并不是很擅长. 可同学们 ...
- 2016.9.15初中部上午NOIP普及组比赛总结
2016.9.15初中部上午NOIP普及组比赛总结 2016.09.15[初中部 NOIP普及组 ]模拟赛 又翻车了!表示时超和空超很可恨! 进度 比赛:AC+0+0+20=120 改题:AC+80+ ...
- 2016.9.10初中部上午NOIP普及组比赛总结
2016.9.10初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1340 好不爽!翻车了!不过排名差不多在中间偏上一点, 还好不是 ...
- 2016.9.3初中部上午NOIP普及组比赛总结
2016.9.3初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1339 这次真爽,拿了个第四!(我还被班主任叫过去1小时呢!) 进 ...
- 2016.8.19上午初中部NOIP普及组比赛总结
2016.8.19上午初中部NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1338 这次总结发得有点晚啊!我在这里解释一下, 因为浏览器的问 ...
- 2016.8.18上午纪中初中部NOIP普及组比赛
2016.8.18上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1336 翻!车!啦!好吧,那是因为大神归来. 进度: 比赛:AC ...
随机推荐
- 简单python脚本,将jupter notebook的ipynb文件转为pdf(包含中文)
直接执行的python代码ipynb2pdf.py 主要思路.将ipynb文件转成tex文件,然后使用latex编译成pdf.由于latex默认转换不显示中文,需要向tex文件中添加相关中文包. 依赖 ...
- SDN与IXP
IXP 互联网交换中心(IXP)在互联网生态系统中发挥着关键作用.在全球范围内,100多个国家/地区有超过400个IXP,其中最大的IXP具有接近10 Tbps的峰值数据速率并连接数百个网络.IXP提 ...
- Jenkins 获取 Git 的提交记录(Change Log)
工作中用 Jenkins 做 iOS 和 Android 的持续集成,之前实现的是当 git 有新代码提交的时候,就会自动编译并上传安装包到蒲公英,然后自动发送QQ群通知或者讨论组通知给相关小伙伴,方 ...
- Centos7使用python3连接inception报错解决办法
inception支持mysqldb库但不支持pymysql库,无奈mysqldb库不兼容py3,直接使用pymysql 连接inception报错如下: ValueError: invalid li ...
- 【原】Python基础-字典
字典是Python唯一内建的映射类型.键可以是数字,字符串和元组. 1 字典的创建 方法一:直接创建 例如: >>> dict = {'key1':'value1', 20: 80} ...
- Channel继承关系
- 常见的可以写入VIM配置文件中的设置参数
常见的可以写入.vimrc文件中的设置参数 设置参数 含义 :set nu :set nonu 设置与取消行号 :syn on :syn off 是否依据语法显示相关的颜色帮助,在VIM修改相关的配置 ...
- 阿里云服务器配置https(总结)
阿里云服务器配置https(总结) 一.总结 一句话总结: 1.下载https证书(可以在阿里云上) 2.在服务器上面开启443端口 3.配置apache服务器,443的加ssl,让80的重定向到44 ...
- 【Java】能提高日常工作效率的一些Java函数
自编工具总是临时抱佛脚来得顺溜,宜常备手边以提高工作效率: package com.hy; import java.io.File; /** * 日常工作常用的一些工具方法 * @author 逆火 ...
- yarn 单点故障 重启 ResourceManger Restart
http://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/ResourceManagerRestart.html Featur ...