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. python-3.x-生成器使用

    生成器函数代码: 1 def gen(n): 2 i = 1; 3 sum = 0; 4 while i <= n: 5 ''' 6 方法体1 -- sum求和是1到9的和 7 yield su ...

  2. 学习java的第十天

    一.今日收获 1.java完全学习手册第二章2.9程序流程控制中的选择结构与顺序结构的例题 2.观看哔哩哔哩上的教学视频 二.今日问题 1.例题的问题不大,需要注意大小写,新的语句记忆不牢 2.哔哩哔 ...

  3. 学习java 7.25

    学习内容: 特殊边框 1. TitledBorder:它的作用并不是直接为其他组件添加边框,而是为其他边框设置标题,创建该类的对象时,需要传入一个其他的Border对象; 2. CompoundBor ...

  4. day15 内置函数和模块

    day15 内置函数和模块 1.三元表达式 代码如下: x = 1 y = 2 res = 'ok' if x > y else 'no' print(res) 输出结果:no 2.内置函数:重 ...

  5. rem.js,移动多终端适配

    window.onload = function(){ /*720代表设计师给的设计稿的宽度,你的设计稿是多少,就写多少;100代表换算比例,这里写100是 为了以后好算,比如,你测量的一个宽度是10 ...

  6. [php代码审计] 通读审计之shangfancms

    前言 大部分的MVC框架,访问的控制器大部分是由外部参数来决定的,那么本篇文章所通读的MVC框架与之前的一系列MVC框架不太一样,它的路由是由程序本身的路由表来决定的. 源码下载 https://ww ...

  7. 【leetocde】922. Sort Array By Parity II

    Given an array of integers nums, half of the integers in nums are odd, and the other half are even.  ...

  8. deque、queue和stack深度探索(下)

    deque如何模拟连续空间?通过源码可以看到这个模型就是通过迭代器来完成. 迭代器通过重载操作符+,-,++,--,*和->来实现deque连续的假象,如上图中的 finish-start ,它 ...

  9. Insert into select语句引发的生产事故

    前言   Insert into select请慎用.这天xxx接到一个需求,需要将表A的数据迁移到表B中去做一个备份.本想通过程序先查询查出来然后批量插入.但xxx觉得这样有点慢,需要耗费大量的网络 ...

  10. oracle 执行计划的获取方法

    1.用explain plan for来获取执行计划 explain plan for <sql>; select * from table(dbms_xplan.display()); ...