1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<stdlib.h>
5 #include<string.h>
6 #include<math.h>
7 #include<queue>
8 using namespace std;
9 typedef long long LL;
10 bool prime[200000];
11 int ans[200000];
12 LL dns[200000];
13 LL id[200];
14 LL d[4][100];
15 LL ask[10000];
16 int e[4][10000];
17 int ck[400];
18 queue<LL>que;
19 int main(void)
20 {
21 int i,j,k;
22 LL n,n1,m,m1;
23 for(i=2; i<=2000; i++)
24 {
25 if(!prime[i])
26 {
27 for(j=i; i*j<=200000; j++)
28 {
29 prime[i*j]=true;
30 }
31 }
32 }
33 int cnt=0;
34 for(i=2; i<=200000; i++)
35 {
36 if(!prime[i])
37 {
38 ans[cnt++]=i;
39 }
40 }
41 scanf("%d",&k);
42 int s;
43 for(s=0; s<k; s++)
44 {
45 memset(d,0,sizeof(d));
46 memset(e,0,sizeof(e));
47 for(i=0; i<4; i++)
48 cin>>id[i];
49 for(i=0; i<4; i++)
50 {
51 LL kk=id[i];
52 int ak=0;
53 int cc=0;
54 while(kk>1&&ak<cnt)
55 {
56 if(ans[ak]*ans[ak]>kk)
57 break;
58 else if(kk%ans[ak]==0)
59 {
60 que.push(ans[ak]);
61 d[i][cc++]=ans[ak];
62 kk/=ans[ak];
63 }
64 else
65 {
66 ak++;
67 }
68 }
69 if(kk>1)
70 {
71 que.push(kk);
72 d[i][cc++]=kk;
73 }
74 }
75 int cc=0;
76 while(!que.empty())
77 {
78 ask[cc++]=que.front();
79 que.pop();
80 }
81 sort(ask,ask+cc);
82 for(i=0; i<4; i++)
83 {
84 for(j=0; d[i][j]!=0; j++)
85 {
86 int l=0;
87 int r=cc-1;
88 int ff;
89 while(l<=r)
90 {
91 int mid=(l+r)/2;
92 if(ask[mid]>=d[i][j])
93 {
94 ff=mid;
95 r=mid-1;
96 }
97 else l=mid+1;
98 }
99 d[i][j]=ff;
100 e[i][ff]++;
101 }
102 }
103 LL as=1;
104 for(i=0; i<400; i++)
105 {
106 int pp=0;
107 for(j=0; j<4; j++)
108 {
109 pp+=e[j][i];
110 }
111 if(pp==0)
112 ck[i]=1;
113 else
114 {
115 if(e[0][i]>e[1][i])
116 {
117 if(e[2][i]<e[3][i]&&e[1][i]<e[3][i])
118 {
119 ck[i]=0;
120 }
121 else
122 ck[i]=1;
123 }
124 if(e[0][i]==e[1][i])
125 { if(e[2][i]==e[3][i])
126 {int xx=e[3][i]-e[0][i]+1;
127 if(xx<=0)
128 xx=0;
129 ck[i]=xx;}
130 else
131 {
132 if(e[1][i]>e[3][i])
133 ck[i]=0;
134 else ck[i]=1;
135 }
136 }
137 }
138 }
139 for(i=0; i<400; i++)
140 {
141 as*=ck[i];
142 }
143 printf("%lld\n",as);
144 }
145 return 0;
146 }

描述

Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson。现

在,刚刚放学回家的 Hankson 正在思考一个有趣的问题。

今天在课堂上,老师讲解了如何求两个正整数 c1和 c2 的最大公约数和最小公倍数。现

在 Hankson 认为自己已经熟练地掌握了这些知识,他开始思考一个“求公约数”和“求公

倍数”之类问题的“逆问题” ,这个问题是这样的:已知正整数 a0,a1,b0,b1,设某未知正整

数 x 满足:

1. x 和 a0 的最大公约数是 a1;

2. x 和b0 的最小公倍数是 b1。

Hankson 的“逆问题”就是求出满足条件的正整数 x。但稍加思索之后,他发现这样的

x 并不唯一,甚至可能不存在。因此他转而开始考虑如何求解满足条件的 x 的个数。请你帮

助他编程求解这个问题。

格式

输入格式

第一行为一个正整数 n,表示有 n 组输入数据。接下来的 n 行每

行一组输入数据,为四个正整数 a0,a1,b0,b1,每两个整数之间用一个空格隔开。输入

数据保证 a0能被 a1 整除,b1 能被 b0整除。

输出格式

共n 行。每组输入数据的输出结果占一行,为一个整数。

对于每组数据:若不存在这样的 x,请输出 0;

若存在这样的 x,请输出满足条件的 x 的个数;

样例1

样例输入1[复制]

2
41 1 96 288
95 1 37 1776

样例输出1[复制]

6
2

限制

每个测试点1s

来源

NOIP 2009

思路:先打表求质数;然后我们知道

最大公约数:=x1min(c1,cc2)*....xnmin(cn,ccn);

最小公倍数:=x1max(c1,cc2)*.....xnmax(cn,ccn)

这样我们分别分解上面给的四个数;

然后分别判断X的各个质因数的个数可以取多少种,然后乘法原理算方案;

P1753HackSon的趣味题的更多相关文章

  1. 算法训练 Hankson的趣味题

    算法训练 Hankson的趣味题   时间限制:1.0s   内存限制:64.0MB        问题描述 Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫Han ...

  2. 1172 Hankson 的趣味题[数论]

    1172 Hankson 的趣味题 2009年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Descrip ...

  3. 1172 Hankson 的趣味题

    1172 Hankson 的趣味题 2009年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Descrip ...

  4. Codevs 1172 Hankson 的趣味题 2009年NOIP全国联赛提高组

    1172 Hankson 的趣味题 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description Hanks 博 ...

  5. 一本通1626【例 2】Hankson 的趣味题

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

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

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

  7. CH3201 Hankson的趣味题

    题意 3201 Hankson的趣味题 0x30「数学知识」例题 描述 Hanks博士是BT(Bio-Tech,生物技术)领域的知名专家,他的儿子名叫Hankson.现在,刚刚放学回家的Hankson ...

  8. luogu P1072 Hankson的趣味题

    题目链接 luogu P1072 Hankson 的趣味题 题解 啊,还是noip的题好做 额,直接推式子就好了 \(gcd(x,a_0)=a_1=gcd(\frac{x}{a_1},\frac{a_ ...

  9. 洛谷P1072 Hankson 的趣味题

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

随机推荐

  1. 日常Java 2021/10/18

    Vecter类实现了一个动态数组,不同于ArrayList的是,Vecter是同步访问的, Vecter主要用在事先不知道数组的大小或可以改变大小的数组 Vecter类支持多种构造方法:Vecter( ...

  2. acute

    In Euclidean geometry, an angle is the figure formed by two rays, called the sides of the angle, sha ...

  3. Scala(一)【安装和IDEA中开发】

    目录 一.下载 二.windows安装 三.linux环境安装 四.Ida开发Scala 1.在线下载Scala插件 2.离线下载Scala插件 3.验证 五.HelloWorld入门程序 1.新建M ...

  4. RocketMQ集群搭建方式

    各角色介绍 Producer:消息的发送者:举例:发信者 Consumer:消息接收者:举例:收信者 Broker:暂存和传输消息:举例:邮局 NameServer:管理Broker:举例:各个邮局的 ...

  5. JS去除对象或数组中的空值('',null,undefined,[],{})

    javascript去掉对象或数组中的'',null,undefined,[],{}.思路就是创建一个新的空对象,然后对传入的对象进行遍历,只把符合条件的属性返回,保留有效值,然后就相当于把空值去掉了 ...

  6. LeetCode1579题——圆圈中最后剩下的数字

    1.题目描述:0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字.例如,0.1.2.3.4这5个数字组成一个圆圈,从数字0开始每次删 ...

  7. Linux学习 - 文件包处理命令

    一.搜索文件find find  [搜索范围]  [匹配条件] (1) -name(名字查找) <1>  find  /etc  -name  init 查找/etc下以 "in ...

  8. 关于og4j漏洞修复解决方案及源码编译

    最近log4j爆出重大漏洞,程序员要赶紧修复了!文末提供已经编译好的jar包. 建议最好修复到log4j-2.15.0-rc2版本,临时解决方案还是存在jndi漏洞. 打开log4j官网https:/ ...

  9. dart系列之:安全看我,dart中的安全特性null safety

    目录 简介 Non-nullable类型 Nullable List Of Strings 和 List Of Nullable Strings !操作符 late关键字 总结 简介 在Dart 2. ...

  10. LuoguP1785 漂亮的绝杀 题解

    Content 因太占排版,请自己去题面查看. Solution 声明:以下和题面相同的变量的意义均和题面相同. 这个题目 \(\texttt{if}\) 操作很多,其他的就是纯模拟. 首先,我们先判 ...