意外
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. 【转】Spring 的下载、安装和使用

    一.下载 Spring 下载地址:http://repo.spring.io/libs-release-local/org/springframework/spring/4.0.6.RELEASE/  ...

  2. 微服务 通过EnableFeignClients调用其他服务的api

    今天在项目上遇到一个问题,通过当前service服务要调用到其他service服务的api接口时,可通过EnableFeignClients调用其他服务的api,大概的步骤如下: 1.在springb ...

  3. path与classpath的差别

    1.path的作用     path是系统用来指定可运行文件的完整路径.即使不在path中设置JDK的路径也可运行JAVA文件,但必须把完整的路径写出来,如C:\Program Files\Java\ ...

  4. html5简单拖拽实现自动左右贴边+幸运大转盘

    此篇文章主要实现两个功能: 1.点击屏幕下方签到悬浮按钮: 2.弹出幸运大转盘,转盘抽奖签到 效果如图: ​ 在网上找了很多移动端拖拽的js实现方式,大部分都是这一种,html5的touch事件,但是 ...

  5. android基站定位程序获取地理位置

    目录 一.设置界面 二.为按钮绑定事件 三.获取基站信息 四.获取经纬度 五.获取物理位置 六.显示结果 七.运行程序 八.总结 九.程序代码 正文 在Android操作系统下,基站定位其实很简单,先 ...

  6. apk 反编译工具的使用

    在学习android 开发的时候,我们经常回尝试使用到别人的apk,希望能了解别人怎么编写的代码,于是想要一个能实现其反编译的软件,将软件反编译出来,查看其代码. 工具/原料 反编译软件dex2jar ...

  7. MathType如何编辑手写体l

    MathType在编辑公式不仅方便而且规范,并且能够根据自己的需要选择不同的字体进行使用,可以是正体也可以是斜体,可以是新罗马体,也可以是花体,这些用word公式编辑器MathType都是可以的.还有 ...

  8. ChemDraw 16最新版本发布 更效率科研的首选

    ChemDraw一直是全球领先的科学绘图软件,致力于为科学家.教师以及学生提供最新的智能应用程序.ChemDraw 16版本相较于15版本做出了较大的改进,大大缩短科研时间,提高科研效率.扩展Name ...

  9. 在MathType如何让括号随内容自动调整大小的技巧

    MathType软件是一款数学公式编辑器工具可以轻松输入各种复杂的公式和符号,与Office文档完美结合,显示效果超好,比Office自带的公式编辑器要强大很多.但是很多的新手朋友不知道在MathTy ...

  10. How do I commit all deleted files in Git?

    Try this: $ git add -u This tells git to automatically stage tracked files -- including deleting the ...