这是个NOIP原题...

题意:

给定 a b c d 求 gcd(a, x) = b && lcm(c, x) = d 的x的个数。

可以发现一个朴素算法是从b到d枚举,期望得分50分。

(为什么lyd大佬的暴力就是90...)

有个要点就是所求的x必定为d的约数。

然后根据lcm和gcd的性质,拆成质因数。

x的每个质因数个数是有范围的,可以求出来。

然后乘起来就行了。

注意要分类讨论,别用书上写的,有毒。

 #include <cstdio>
const int N = ; int p[N], top;
bool vis[N]; inline void getp(int b) {
for(int i = ; i <= b; i++) {
if(!vis[i]) {
p[++top] = i;
}
for(int j = ; j <= top && i * p[j] <= b; j++) {
vis[i * p[j]] = ;
if(i % p[j] == ) {
break;
}
}
}
return;
} inline void clear() { return;
} inline int getcnt(int pr, int a) {
if(a % pr) {
return ;
}
int ans = ;
a /= pr;
while(a % pr == ) {
ans++;
a /= pr;
}
return ans;
} inline void solve() {
int a, b, c, d;
scanf("%d%d%d%d", &a, &b, &c, &d);
int d1 = d, ans = ;
int ta, tb, tc, td;
for(int i = ; i <= top && p[i] <= d1; i++) {
if(d1 % p[i]) {
continue;
}
td = ;
d1 /= p[i];
while(d1 % p[i] == ) {
d1 /= p[i];
td++;
}
ta = getcnt(p[i], a);
tb = getcnt(p[i], b);
tc = getcnt(p[i], c);
if(tc < td) { // ans = td
if((ta > tb && tb == td) || (ta == tb && tb <= td)) {
;
}
else {
printf("0\n");
return;
}
}
else if(tc == td) { // ans <= td
if(ta > tb && tb <= td) {
;
}
else if(ta == tb && tb <= td) {
ans *= (td - tb + );
}
else {
printf("0\n");
return;
}
}
}
if(d1 > ) {
td = ;
ta = getcnt(d1, a);
tb = getcnt(d1, b);
tc = getcnt(d1, c);
if(tc < td) { // ans = td
if((ta > tb && tb == td) || (ta == tb && tb <= td)) {
;
}
else {
printf("0\n");
return;
}
}
else if(tc == td) { // ans <= td
if(ta > tb && tb <= td) {
;
}
else if(ta == tb && tb <= td) {
ans *= (td - tb + );
}
else {
printf("0\n");
return;
}
}
}
printf("%d\n", ans);
return;
} int main() {
getp();
int T;
scanf("%d", &T);
while(T--) {
solve();
if(T) {
clear();
}
} return ;
}

AC代码

洛谷P1072 Hankson的趣味题的更多相关文章

  1. 洛谷 P1072 Hankson 的趣味题 解题报告

    P1072 \(Hankson\)的趣味题 题目大意:已知有\(n\)组\(a0,a1,b0,b1\),求满足\((x,a0)=a1\),\([x,b0]=b1\)的\(x\)的个数. 数据范围:\( ...

  2. 洛谷P1072 Hankson 的趣味题

    P1072 Hankson 的趣味题 题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现在,刚刚放学回家的 Hankson 正在思考一 ...

  3. Java实现洛谷 P1072 Hankson 的趣味题

    P1072 Hankson 的趣味题 输入输出样例 输入 2 41 1 96 288 95 1 37 1776 输出 6 2 PS: 通过辗转相除法的推导 import java.util.*; cl ...

  4. 【题解】洛谷P1072 Hankson的趣味题 (gcd和lcm的应用)

    洛谷P1072:https://www.luogu.org/problemnew/show/P1072 思路 gcd(x,a0)=a1 lcm(x,b0)=b1→b0*x=b1*gcd(x,b0) ( ...

  5. 洛谷P1072 Hankson 的趣味题(题解)

    https://www.luogu.org/problemnew/show/P1072(题目传送) 数学的推理在编程的体现越来越明显了.(本人嘀咕) 首先,我们知道这两个等式: (a0,x)=a1,[ ...

  6. 洛谷 P1072 Hankson 的趣味题

    题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现 在,刚刚放学回家的 Hankson 正在思考一个有趣的问题. 今天在课堂上,老师讲 ...

  7. [NOIP2009] 提高组 洛谷P1072 Hankson 的趣味题

    题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现 在,刚刚放学回家的 Hankson 正在思考一个有趣的问题. 今天在课堂上,老师讲 ...

  8. 洛谷 - P1072 Hankson - 的趣味题 - 质因数分解

    https://www.luogu.org/problemnew/show/P1072 一开始看了一看居然还想放弃了的. 把 \(x,a_0,a_1,b_0,b_1\) 质因数分解. 例如 \(x=p ...

  9. 洛谷 P1072 Hankson 的趣味题 || 打质数表的分解质因数

    方法就是枚举,根据b0和b1可以大大减小枚举范围,方法类似这个http://blog.csdn.net/hehe_54321/article/details/76021615 将b0和b1都分解质因数 ...

随机推荐

  1. linux audit审计(8)--ausearch搜索audit日志文件

    ausearch这个工具,可以针对指定的事件来搜索audit日志文件.默认情况下,ausearch搜索/var/log/audit/audit.log这个文件. The ausearch utilit ...

  2. 使用getopts处理输入参数

    在编写shell脚本中,需要输入参数,使用过程中,getopts更加方便.可以很好的处理用户输入的参数和参数值. 参加如下一段脚本: #!/bin/bash while getopts ": ...

  3. WEB相关概念、Tomcat初识、Servlet、基本知识。

    /* * 一.web的概念? * 1.web就是在http协议基础之上, 利用浏览器进行访问的网站. * Web Page指网站内的网页. 我们常说的WWW(World Wide Web 万维网)就是 ...

  4. JavaScript之简易http接口测试工具网页版

    简易http接口测试工具网页版,支持get.post请求,支持json格式消息体,form表单暂不支持. httpClient.html <!DOCTYPE html> <html ...

  5. Python——列表操作

    一.列表中所有元素出现的次数,并输出为字典模式 def count_list(list): b_list = {} for i in set(list): b_list[i] = list.count ...

  6. Python——数组模块(array)

    一.模块说明 array模块是python中实现的一种高效的数组存储类型.它和list相似,但是所有的数组成员必须是同一种类型,在创建数组的时候,就确定了数组的类型. 二.代码

  7. Js返回上一页,刷新页面,定时刷新,改变地址栏 等常用实用技巧

    1. Javascript 返回上一页history.go(-1), 返回两个页面: history.go(-2); 2. history.back(). 3. window.history.forw ...

  8. 在没有 Emacs 的情况下使用 Org 模式

    导读 每到年初似乎总有这么一个疯狂的冲动来寻找提高生产率的方法.新年决心,正确地开始一年的冲动,以及“向前看”的态度都是这种冲动的表现.软件推荐通常都会选择闭源和专利软件.但这不是必须的. 这是我 2 ...

  9. Maven使用(一)—— Maven的安装与全局配置

    一.Maven安装 Maven的安装步骤: 1.Maven官网(http://maven.apache.org/)下载压缩包,解压缩,当前最新版本是apache-maven-3.5.3-bin.zip ...

  10. UOJ356 [JOI2017春季合宿] Port Facility 【启发式合并】【堆】【并查集】

    题目分析: 好像跑得很快,似乎我是第一个启发式合并的. 把玩具看成区间.首先很显然如果有两个玩具的进出时间有$l1<l2<r1<r2$的关系,那么这两个玩具一定在不同的栈中间. 现在 ...