这是个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. Unit 1.前端基础之html

    一.什么是html 定义:全称是超文本标记语言(HyperText Markup Language),它是一种用于创建网页的标记语言.标记语言是一种将文本(Text)以及文本相关的其他信息结合起来,展 ...

  2. 取消 Vue 中格式编译警告

    使用VS Code在学习 Vue 的过程中,博主是在2.0之后开始学习的,在写项目的时候发现控制台经常会报一大堆的警告,都是关于格式的,有时候少空格,有时候多空格,不胜其烦,出现这个问题是因为在初始化 ...

  3. Flutter的scope_model使用mixin语法报错

    在pubspec.yaml同级目录下创建analysis_options.yaml文件,内容: # https://www.dartlang.org/guides/language/analysis- ...

  4. Django Rest framework 框架

    一.开发模式: 1. 普通开发方式(前后端放在一起写) 2. 前后端分离(前后台通过ajaxo交互) 后端(django rest framework写的) <----ajaxo---> ...

  5. mysql数据库修改数据表引擎的方法

    对于MySQL数据库,如果你要使用事务以及行级锁就必须使用INNODB引擎.如果你要使用全文索引,那必须使用myisam. INNODB的实用性,安全性,稳定性更高但是效率比MYISAM稍差,但是有的 ...

  6. CSS3圆角详解(border-radius)

    1.CSS3圆角的优点 传统的圆角生成方案,必须使用多张图片作为背景图案.CSS3的出现,使得我们再也不必浪费时间去制作这些图片了,而且还有其他多个优点: 减少维护的工作量.图片文件的生成.更新.编写 ...

  7. Java多线程0:核心理论

    并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能.它要求编程者对计算机最底层的运作原理有深刻的理解,同时要求编程者逻辑清晰.思维缜密,这样才能写出高效.安全.可靠的多线程并发程序.本系 ...

  8. 老男孩python学习自修第二十四天【多进程】

    1. 体验多进程的运行速度 #!/usr/bin/env python # _*_ coding:UTF-8 _*_ from multiprocessing import Pool import t ...

  9. linux 查看TCP端口

    如有转载,不胜荣幸.http://www.cnblogs.com/aaron-agu/ netstat –nat

  10. vue計算屬性

    計算屬性:computed 和method的差別:computed是基於它的依賴緩存,只有它的相關依賴發生改變時才會重新獲取值. method是在重新渲染時,函數總會重新調用. comuputed:默 ...