[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 ...
随机推荐
- linux环境下固定ip操作
背景: 使用虚拟机管理软件VMvare workstation 安装好liunx虚拟机(centos)成功,下面为了固定linux的ip进行一系列设置 参考的文件有部分不是很详细,在借鉴它的基础上进行 ...
- php的IP转换成整型函数ip2long()易出现负数
php中将IP转换成整型的函数ip2long()容易出现问题,在IP比较大的情况下,会变成负数.如下<?php$ip = "192.168.1.2";$ip_n = ip2l ...
- DBeaver的时区问题
最近使用DBeaver作为连接MySQL的客户端,发现执行sql返回的datetime类型字段时间不对,比实际时间多了10多个小时, 无论是连接开发服务器或者连本机MySQL都有这个问题. 检查服务器 ...
- linux 之oracle静默安装
一.安装前准备工作1.修改主机名#vi /etc/hosts //并添加内网IP地址对应的hostname,如下127.0.0.1 localhost::1 ...
- [java]三种自定义链表排序方式
代码: import java.util.ArrayList; import java.util.Comparator; import java.util.List; class Emp{ Strin ...
- OpenJudge计算概论-整数的个数
/*========================================================== 整数的个数 总时间限制: 1000ms 内存限制: 65536kB 描述 给定 ...
- SVN分支创建与合并
SVN分支 一个branch是某个development line(通常是主线也即trunk)的一个拷贝,branch存在的意义在于,在不干扰trunk的情况下,和trunk并行开发,待开发结束后合并 ...
- 简易的CRM系统案例SpringBoot + thymeleaf + MySQL + MyBatis版本
创建maven项目 pop.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns ...
- LeetCode_168. Excel Sheet Column Title
168. Excel Sheet Column Title Easy Given a positive integer, return its corresponding column title a ...
- Linux nohup和&后台运行,进程查看及终止,进程信息输出,控制台信息输出
nohup和&后台运行,进程查看及终止 1.nohup 用途:不挂断地运行命令. 语法:nohup Command [ Arg … ] [ & ] 无论是否将 nohup 命令的输 ...