P1753HackSon的趣味题
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 的个数;
限制
每个测试点1s
来源
NOIP 2009
思路:先打表求质数;然后我们知道
最大公约数:=x1min(c1,cc2)*....xnmin(cn,ccn);
最小公倍数:=x1max(c1,cc2)*.....xnmax(cn,ccn);
这样我们分别分解上面给的四个数;
然后分别判断X的各个质因数的个数可以取多少种,然后乘法原理算方案;
P1753HackSon的趣味题的更多相关文章
- 算法训练 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 正在思考一 ...
随机推荐
- 8.7 进程间的通讯:管道、消息队列、共享内存、信号量、信号、Socket
进程间的通讯 进程间为什么需要通讯? 共享数据.数据传输.消息通知.进程控制 进程间的通讯有哪些类型? 首先,联系前面讲过的知识,进程之间的用户地址空间是相互独立的,不能进行互相访问,但是,内核空间却 ...
- Typora数学公式输入指导手册
Markdown 公式指导手册 公式大全的链接 https://www.zybuluo.com/codeep/note/163962#mjx-eqn-eqsample 目录 Markdown 公式指导 ...
- 学习java 7.3
学习内容:定义类不需要加static 成员方法在多个对象时是可以共用的,而成员变量不可以共用,多个对象指向一个内存时,改变变量的值,对象所在的类中的变量都会改变 成员变量前加private,成员方法前 ...
- Spark(二十一)【SparkSQL读取Kudu,写入Kafka】
目录 SparkSQL读取Kudu,写出到Kafka 1. pom.xml 依赖 2.将KafkaProducer利用lazy val的方式进行包装, 创建KafkaSink 3.利用广播变量,将Ka ...
- Angular中@Output()的使用方法
子component中的html文件 <button (click)="Send()">送出</button><br> 子component中的 ...
- WebService学习总览
[1]WebService简介 https://blog.csdn.net/xtayfjpk/article/details/12256663 [2]CXF中Web服务请求处理流程 https://b ...
- 100个Shell脚本——【脚本4】自定义rm命令
[脚本4]自定义rm命令 linux系统的rm命令太危险,一不小心就会删除掉系统文件. 写一个shell脚本来替换系统的rm命令,要求当删除一个文件或者目录时,都要做一个备份,然后再删除.下面分两种情 ...
- iOS调用系统电话、浏览器、地图、邮件等
- (IBAction)openMaps { //打开地图 NSString*addressText = @"beijing"; //@"1Infinite Loop, ...
- Windows 下 Node.js 开发环境搭建
1.利用CentOS Linux系统自带的yum命令安装.升级所需的程序库: sudo -s LANG=C yum -y install gcc gcc-c++ autoconf libjpeg li ...
- 【Linux】【Services】【SaaS】Docker+kubernetes(1. 基础概念与架构图)
1.简介 1.1. 背景:公司正在进行敏捷开发环境的搭建,以取代传统的架构,好处大大的,我就不赘述了.公司原来负责这个项目的同事要转组,我只好交给另外同事继续,但是为了防止同样的事情,我也需要深入了 ...