这是个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. mybatis二级缓存详解

    1  二级缓存简介 二级缓存是在多个SqlSession在同一个Mapper文件中共享的缓存,它是Mapper级别的,其作用域是Mapper文件中的namespace,默认是不开启的.看如下图: 1. ...

  2. (一)类数组对象NodeList

    NodeList对象的特点: NodeList是一种类数组对象,用于保存一组有序的节点. 可以通过方括号语法来访问NodeList的值,有item方法与length属性. 它并不是Array的实例,没 ...

  3. MyBatis映射文件4(参数获取#{}和${}/select标签详解[返回类型为list])

    参数获取 之前我们都是采用#{}的方式进行参数传递,其实MyBatis还有另外的参数传递方式${} 使用方法相同,但是还是有很大区别的 这里做一个测试: <select id="get ...

  4. drf 之序列化组件

    序列化 把Python中对象转换为json格式字符串 反序列化 把json格式转为为Python对象. 用orm查回来的数据都是都是一个一个的对象, 但是前端要的是json格式字符串. 序列化两大功能 ...

  5. Python基础知识2-内置数据结构(上)

     分类 数值型 用浮点型的时候注意别和"=="一起使用. 数字的处理函数 注意round()函数的特殊:四舍六入五取偶 类型判断 列表list 列表list定义 初始化 列表索引访 ...

  6. Kettle 变量(arg位置参数)

    1.表输入中使用?占位作为kettle转换变量 数据预览: 获取变量数据: 使用?传入变量 需要勾选替换sql语句中的变量,并选则从步骤插入数据中所在步骤 数据预览

  7. 从git中删除 .idea 目录

    将.idea目录加入ignore清单: $ echo '.idea' >> .gitignore   从git中删除idea: $ git rm —cached -r .idea 3 将. ...

  8. DAY07、字符编码和文件操作

    一.字符编码 1.什么是字符编码? 人类能识别的是字符等高级标识符,电脑只能识别0,1组成的标识符,要完成人与机器之间的信息交流,              一定需要一个媒介,进行两种标识符的转化(两 ...

  9. 让PC端页面在手机端显示缩小版的解决方法

    做页面的时候我们做好pC端页面时,因编辑那边需求,在手机端页面也应该是缩小版,不能乱的.在网上找了各种解决方案,经实验,这种是可以的: 在head里边加上这两句meta  <meta name= ...

  10. CSS边框效果

    前面的话 本文将详细介绍CSS边框效果 半透明边框 border:10px solid hsla(0, 0%, 100%,.5); background-clip:padding-box; 缝边效果 ...