Acwing200 Hankson的趣味题
原题面:https://www.acwing.com/problem/content/202/
题目大意:gcd(x,a0)=a1,lcm(x,b0)=b1,问你有多少满足条件的正整数x。
输入描述:t组输入,第一行一个整数t,代表测试数据的组数。接下来t行,每行四个整数,a0,a1,b0,b1。
输出描述:对于每组测试数据,输出满足条件的x的个数。
输入样例:
输出样例:
分析:lcm(x,b0)=b1说明x一定是b1的因子,可以预处理跑出1e5范围内的质数,再对b1进行质因子分解,最后dfs枚举b1的因子,去检测是否满足gcd(x,a0)=a1&&lcm(x,b0)=b1,如果满足且不重复,则使答案加一。
代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+;
typedef long long ll;
int n;ll a,b,c,d;
map<ll,int> vis;
int v[maxn];ll prime[maxn];int cnt,ans;
vector<ll> divisor;
ll gcd(ll a,ll b) {
return !b ? a : gcd(b, a % b);
}
ll lcm(ll a,ll b) {
return a * b / gcd(a, b);
}
void sieve() {
cnt = ;
memset(v, , sizeof(v));
for (int i = ; i < maxn; i++) {
if (!v[i]) {
v[i] = i;
prime[cnt++] = i;
}
for (int j = ; j < cnt; j++) {
if (v[i] < prime[j] || i * prime[j] >= maxn) break;
v[i * prime[j]] = prime[j];
}
}
}
void depart(ll d) {
divisor.clear();
for (int i = ; prime[i] * prime[i] <= d; i++) {
while (d % prime[i] == ) {
divisor.push_back(prime[i]);
d /= prime[i];
}
}
if (d > )
divisor.push_back(d);
}
void dfs(ll x,int p,int n) {
if (p == n) {
//cout<<x<<endl;
if (vis[x]) return;
vis[x] = ;
if (gcd(a, x) == c && lcm(b, x) == d)
ans++;
return;
}
dfs(x * divisor[p], p + , n);
dfs(x, p + , n);
}
//gcd(x,a0)=a1 lcm(x,b0)=b1
int main() {
sieve();
cin >> n;
while (n--) {
ans = ;
vis.clear();
cin >> a >> c >> b >> d;
depart(d);
dfs(, , divisor.size());
cout << ans << endl;
}
return ;
}
Acwing200 Hankson的趣味题的更多相关文章
- 算法训练 Hankson的趣味题
算法训练 Hankson的趣味题 时间限制:1.0s 内存限制:64.0MB 问题描述 Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫Han ...
- 1172 Hankson 的趣味题[数论]
1172 Hankson 的趣味题 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Descrip ...
- 1172 Hankson 的趣味题
1172 Hankson 的趣味题 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Descrip ...
- Codevs 1172 Hankson 的趣味题 2009年NOIP全国联赛提高组
1172 Hankson 的趣味题 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description Hanks 博 ...
- 一本通1626【例 2】Hankson 的趣味题
1626:[例 2]Hankson 的趣味题 题目描述 Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫Hankson.现在,刚刚放学回家的Hankson 正在思考 ...
- 洛谷 P1072 Hankson 的趣味题 解题报告
P1072 \(Hankson\)的趣味题 题目大意:已知有\(n\)组\(a0,a1,b0,b1\),求满足\((x,a0)=a1\),\([x,b0]=b1\)的\(x\)的个数. 数据范围:\( ...
- CH3201 Hankson的趣味题
题意 3201 Hankson的趣味题 0x30「数学知识」例题 描述 Hanks博士是BT(Bio-Tech,生物技术)领域的知名专家,他的儿子名叫Hankson.现在,刚刚放学回家的Hankson ...
- luogu P1072 Hankson的趣味题
题目链接 luogu P1072 Hankson 的趣味题 题解 啊,还是noip的题好做 额,直接推式子就好了 \(gcd(x,a_0)=a_1=gcd(\frac{x}{a_1},\frac{a_ ...
- 洛谷P1072 Hankson 的趣味题
P1072 Hankson 的趣味题 题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现在,刚刚放学回家的 Hankson 正在思考一 ...
随机推荐
- 一个元素的宽度 及带padding,border,margin的各自情况
width() - 设置或返回元素的宽度 height() - 设置或返回元素的高度 innerWidth() - 返回元素的宽度(包含 padding) innerHeight() - 返回元素的高 ...
- 初识Python和使用Python爬虫
一.python基础知识了解: 1.特点: Python的语言特性: Python是一门具有强类型(即变量类型是强制要求的).动态性.隐式类型(不需要做变量声明).大小写敏感(var和VAR代表 ...
- 一个小白对auth的理解
---恢复内容开始--- PS:最近需要做一个验证用户权限的功能,在官方和百度看了下,发现大家都是用auth来做验证,官方有很多auth的使用教程,但是都不全面,我也提问了几个关于auth的问题 也没 ...
- jQuery设置input的type属性
$("#inputName").attr("type","text");
- P1002 A+B for Polynomials (25分)
1002 A+B for Polynomials (25分) This time, you are supposed to find A+B where A and B are two polyn ...
- DeepLearning算法文章
算法源码: learn_dl : https://github.com/hanbt/learn_dl rnn-from-scratch : https://github.com/pangolulu/r ...
- 第1节 storm日志告警:1、 - 5、日志监控告警业务需求、代码、集群运行、总结
如何解决短信或者邮件频繁发送的问题:每次发送的时候都先查询数据库记录,看一下有没有给这个人发送消息,上一次发送消息的时间是什么时候,如果发送时间间隔小于半个小时,就不要再发了 ============ ...
- rsa免密钥登陆
#第一步 生成密钥,一路回车就行 ssh-keygen -t rsa #第二步 将密钥拷贝到目标服务器上,注意双引号 ssh-copy-id -i ~/.ssh/id_rsa.pub "ro ...
- 通过开源项目免费申请 IntelliJ IDEA license(激活码)
通过github开源项目免费申请 IntelliJ IDEA license(激活码) 我用来申请的github开源项目:https://github.com/Linliquan/springboot ...
- 如何利用TableView显示自定义nib中创建的UITableViewCell或子类?
1.创建nib文件 cell.xib 2.在nib中拖一个UITableView出来,设置其reuse Identifier,再根据cell UI需要拖出view摆放好 3.创建ViewControl ...