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. cp -拷贝文件出现错误

    对于cp -a最主要的用法是在保留原文件属性的前提下复制文件. 如果出现了拷贝文件错误,在文件前面加上-a 即可

  2. android studio Please configure Android SDK / please select Android SDK

    有可能是sdk文件损坏造成的. file->settings->appearance&behavior->system settings->android sdk-&g ...

  3. words in English that contradict themselves

    [S1E10, TBBT]Leonard: I don't get it. I already told her a lie. Why would I replace it with a differ ...

  4. Java偏向锁浅析

    偏向锁的定义 顾名思义,偏向锁会偏向第一个访问锁的线程. 如果在接下来的运行过程中,该锁没有被其他线程访问,这持有偏向锁的线程将永远不需要同步 如果在运行过程中,遇到了其他线程抢占锁,则持有偏向锁的线 ...

  5. 【区间dp】- P1880 [NOI1995] 石子合并

    记录一下第一道ac的区间dp 题目:P1880 [NOI1995] 石子合并 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 代码: #include <iostream> ...

  6. 【Linux】【Services】【Package】编译安装

    程序包编译安装:         testapp-VERSION-release.src.rpm --> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装:         ...

  7. BeanDefinitionLoader spring Bean的加载器

    spring 容器注册bean , 会把bean包装成beanDefinition 放进spring容器中,beanDefinitionLoader就是加载bean的类 . 一.源码 class Be ...

  8. 注册页面的servlet

    package cn.itcast.travel.web.servlet;import cn.itcast.travel.domain.ResultInfo;import cn.itcast.trav ...

  9. 【力扣】有序矩阵中第K小的元素

    给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素.请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素. 示例: matrix = [ [ 1, 5, ...

  10. 20 个 .NET 6 新增的 API

    DateOnly & TimeOnly .NET 6 引入了两种期待已久的类型 - DateOnly 和 TimeOnly, 它们分别代表DateTime的日期和时间部分. DateOnly ...