意外
Time Limit: 1000 MS Memory Limit: 65536 K
Total Submit: 326(87 users) Total Accepted: 97(63 users) Rating:  Special Judge: No
Description

静竹以为从此过上了幸福的日子,没想到数学的好友欧几里德心存不满总是暗中使坏!有一天,欧几里德在静竹经常与数学相见的地方放了一条毒蛇,一不小心静竹就中毒了。还有人性的是,欧几里德把解药放到了一个密码箱里,但是密码呢必须通过箱子上面的两个数来计算出,数学能够把静竹成功解救吗?

Input

输入数据包含两个整数x, y(2 <= x <= 1 0,000,000, 2 <= y <= 100,000,000),

处理到文件结束

Output

对于每组输入的x,y输出一个整数表示密码并换行

密码是由p+q的和组成,其中p,q满足

1) p q都是正整数

2) GCD(p, q) = x;

3) LCM(p, q) = y.

由于存在多组解,输出p+q和最小的那种情况即可。

如果p, q不存在,输出Vagaa

Sample Input
3 15

23 45
Sample Output
18

Vagaa

解题思路:

p*q=gcd(p,q)*lcm(p,q)=y*x;

那p,q的范围是在x到sqrt(y*x)之间的,遍历一遍就好了。

但是,就这么水过去,感觉没什么收获。用一点数论的知识吧~

p=a*x,q=b*x;这是肯定的,都知道的。

p*q=(a*b)*x*x;

p*q=y*x=(a*b)*x*x;

y/x=a*b;

a,b是互质的。关键就要找出a和b

对y/x分解质因子,分解质因子每个质因子都质数。我们应该分解因数。然后暴力搜索一遍

#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <math.h>
#include <stdio.h> using namespace std;
typedef long long int LL;
LL prime[20005];
LL sprime[20005];
int mark[20005];
int tot;
int cnt;
LL x,y;
LL ans;
void eular()
{
memset(mark,0,sizeof(mark));
tot=0;
for(int i=2;i<=20000;i++)
{
if(!mark[i]) prime[tot++]=i;
for(int j=0;j<tot;j++)
{
if(i*prime[j]>20000) break;
mark[i*prime[j]]=1;
if(i%prime[j]==0)
break;
}
}
}
void Divide(LL n)
{
cnt=0;
LL t=(LL)sqrt(1.0*n);
for(LL i=0;i<tot&&prime[i]<=t;i++)
{
if(n%prime[i]==0)
{
sprime[++cnt]=1;
while(n%prime[i]==0)
{
n/=prime[i];
sprime[cnt]*=prime[i];
}
}
}
if(n>1)
sprime[++cnt]=n;
}
void fun(int x,LL l,LL r)
{
if(x>cnt)
{
//if(l==r) return;
ans=min(ans,l+r);
return;
}
fun(x+1,l*sprime[x],r);
fun(x+1,l,r*sprime[x]);
}
int main()
{
while( scanf("%lld%lld",&x,&y)!=EOF)
{
eular();
if(y%x!=0)
{
printf("Vagaa\n");
continue;
} Divide(y/x);
ans=1e18;
fun(1,1,1);
printf("%lld\n",ans*x);
}
return 0;
}

HRBUST - 1153 意外 HRBUST - 1153 (数论)的更多相关文章

  1. hrbust 1328 相等的最小公倍数(数论)

    Description 定义An为1,2,-,n的最小公倍数,例如,A1 = 1,A2 = 2,A3 = 6,A4 = 12,A5 = 60,A6 = 60. 请你判断对于给出的任意整数n,An是否等 ...

  2. centos mysql 大量数据导入时1153 错误:1153 - Got a packet bigger than 'max_allowed_packet' bytes

    参考:http://stackoverflow.com/questions/93128/mysql-error-1153-got-a-packet-bigger-than-max-allowed-pa ...

  3. js鲸鱼

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  4. ssh隧道使用

    在内网中几乎所有的linux服务器和网络设备都支持ssh协议.一般情况下,ssh协议是允许通过防火墙和边界设备的,所以经常被攻击者利用.同时ssh协议的传输过程是加密的,所以我们很难区分合法的ssh会 ...

  5. HRBUST 1211 火车上的人数【数论解方程/模拟之枚举+递推】

    火车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达第2站,在第2站有人上.下车,但上.下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为a人.从第3站起(包括第3站 ...

  6. ural 1153. Supercomputer

    1153. Supercomputer Time limit: 2.0 secondMemory limit: 64 MB To check the speed of JCN Corporation ...

  7. FJNU 1153 Fat Brother And XOR(胖哥与异或)

    FJNU 1153 Fat Brother And XOR(胖哥与异或) Time Limit: 1000MS   Memory Limit: 257792K [Description] [题目描述] ...

  8. Navicat导入数据时发生了报错 --- 1153 - Got a packet bigger than 'max_allowed的处理办法

    今天我在使用Navicat导入.sql文件数据时,发现本来是80万条的数据,结果只导入了10万条左右,而且在其错误信息日志中,我发现了这样一条错误:1153 - Got a packet bigger ...

  9. Navicat 导入数据报错 --- 1153 - Got a packet bigger than 'max_allowed_packet' bytes

    在用Navicat导入SQL文件时报错:MySql 错误 Err [Imp] 1153 - Got a packet bigger than 'max_allowed_packet' bytes 查了 ...

随机推荐

  1. 修改MySQL的默认密码的四种小方法

    投稿:lijiao 字体:[增加 减小] 类型:转载 时间:2015-09-05我要评论 对于windows平台来说安装完MySQL后,系统就已经默认生成了许可表和账户,下文中就教给大家如何修改MyS ...

  2. Gray Code - 格雷码

    基本概念 格雷码是一种准权码,具有一种反射特性和循环特性的单步自补码,它的循环.单步特性消除了随机取数时出现重大误差的可能,它的反射.自补特性使得求反非常方便.格雷码属于可靠性编码,是一种错误最小化的 ...

  3. 最有价值的50道java面试题 适用于准入职Java程序员

    下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最 ...

  4. 左连接去重(objec)

    需求场景: 1.前端使用的object-table(angularJs) 2.自定义模糊查询 可以模糊查询主表,主表没有数据的时候,可通过字表的(name或者hostname)字段来查询(主-子:一对 ...

  5. Css中position、float和clear整理

    Position: absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位. 元素的位置通过 "left", "top", ...

  6. C#------各种数据库连接字符串编写

    转载: https://www.connectionstrings.com/

  7. Effective C++ Item 18 Make interfaces easy to use correctly and hard to use incorrectly

    1. A good API will provide easy to use interfaces but also provide hard to miss-use interfaces. Usua ...

  8. swift - 之 UIColor使用自定义的RGB配色

    1.10进制颜色 UIColor(red: /, green: /, blue: /, alpha: 0.5) 2.16进制颜色 UIColor(red: , green: , blue: , alp ...

  9. js里面声明变量时候的注意事项

    变量名可以是中文,只能有下划线,$,数字和字母组成,开头只能以下划线(不建议使用)和字母开头.

  10. IOS视频播放器的制作

    利用自带MPMoviePlayerController来实现视频播放,首先要在项目中导入MediaPlayer.Framework框架包. 在视图控制器中 #import "MediaPla ...