这是个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. vue-resources&axios

    vue-resource vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应. vue-resource特点: 体积小 vue-re ...

  2. js中style,currentStyle和getComputedStyle的区别以及获取css样式操作方法

    用js的style只能获取元素的内联样式,内部样式和外部样式使用style是获取不到的. currentStyle可以弥补style的不足(可获取内联样式,内部样式和外部样式),但是只适用于IE. g ...

  3. 【译】Six Open Source Dashboards to Organize Your Data

    作者:Ben Gregory on Jun 29, 2016   译者:carsonzhu 在天文学家看来,我们相信每个组织都可以从数据的正确集中,组织和清理中受益. 我们正在建立一个公司来做到这一点 ...

  4. python django 的环境搭建(centos)

    一.安装好nginx 二.安装uwsgi yum install python-devel -y pip3 install uwsgi #测试启动django /usr/local/python3/b ...

  5. windows 10 & 禁用服务.bat

    windows 10 & 禁用服务.bat 禁用服务.bat @echo off net stop WSearch net stop wuauserv net start TrustedIns ...

  6. jquery的show()和hide()方法

    显示和隐藏元素的方法 相当于CSS中的display属性 show()方法,相当于display:block hide()方法,相当于display:none

  7. 转 利用java反射实现两个具有相同属性bean赋值

    package com.dobn.bdgcgl.utils; import java.lang.reflect.Field; import java.lang.reflect.Method; publ ...

  8. 今天开始学Pattern Recognition and Machine Learning (PRML),章节5.2-5.3,Neural Networks神经网络训练(BP算法)

    转载请注明出处:http://www.cnblogs.com/xbinworld/p/4265530.html 这一篇是整个第五章的精华了,会重点介绍一下Neural Networks的训练方法——反 ...

  9. 给dom对象添加事件

  10. Tyche 2191 WYF的递推式

    题目描述 WYF手中有这样一条递推式 WYF并不是想让你帮他做出结果,事实上,给定一个n,他能够迅速算出Fn.WYF只是想单纯的考验一下读者们. 输入描述 仅一行,三个整数N,F1,P 输出描述 仅一 ...