题目链接:https://codeforces.com/contest/1152/problem/C

题意:给定a,b(<1e9)。求使得lcm(a+k,b+k)最小的k,若有多个k,求最小的k。(k>=0)

思路:昨晚打cf因为某些原因,沉不下心来看题,本来是个上分的好机会QAQ。。。所以吸取教训,下次状态好的时候再打比赛。

     回到题目,首先给出gcd(a,b)=gcd(a,a-b),这个很显然,所以有gcd(a+k,b+k)=gcd(a+k,a-b)。而lcm(a+k,b+k)=(a+k)*(b+k)/gcd(a+k,b+k)。所以我们可以枚举a-b的所有因子,通过该因子计算出k,进行判断。不过记得要用LL。

AC代码:

#include<cstdio>
#include<cmath>
using namespace std;
typedef long long LL; LL a,b,sub,ans,Min=0x3f3f3f3f3f3f3f3f; LL gcd(LL a,LL b){
return b?gcd(b,a%b):a;
} void solve(LL x){
LL k=(x-a%x)%x;
LL aa=a+k,bb=b+k;
LL tmp=aa/gcd(aa,bb)*bb;
if(tmp<Min)
Min=tmp,ans=k;
if(tmp==Min&&k<ans)
ans=k;
} int main(){
scanf("%lld%lld",&a,&b);
if(a==b){
printf("0\n");
return ;
}
sub=abs(a-b);
for(LL i=;i*i<=sub;++i)
if(sub%i==){
solve(i);
solve(sub/i);
}
printf("%lld\n",ans);
return ;
}

Codeforces Round #554 (Div. 2)-C(gcd应用)的更多相关文章

  1. Codeforces Round #554 (Div. 2) C.Neko does Maths (gcd的运用)

    题目链接:https://codeforces.com/contest/1152/problem/C 题目大意:给定两个正整数a,b,其中(1<=a,b<=1e9),求一个正整数k(0&l ...

  2. Codeforces Round #554 (Div. 2) C. Neko does Maths(数学+GCD)

    传送门 题意: 给出两个整数a,b: 求解使得LCM(a+k,b+k)最小的k,如果有多个k使得LCM()最小,输出最小的k: 思路: 刚开始推了好半天公式,一顿xjb乱操作: 后来,看了一下题解,看 ...

  3. Codeforces Round #554 (Div. 2) C. Neko does Maths (数论 GCD(a,b) = GCD(a,b-a))

    传送门 •题意 给出两个正整数 a,b: 求解 k ,使得 LCM(a+k,b+k) 最小,如果有多个 k 使得 LCM() 最小,输出最小的k: •思路 时隔很久,又重新做这个题 温故果然可以知新❤ ...

  4. Codeforces Round #323 (Div. 2) C. GCD Table 暴力

    C. GCD Table Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/583/problem/C ...

  5. Codeforces Round #554 (Div. 2) C. Neko does Maths (简单推导)

    题目:http://codeforces.com/contest/1152/problem/C 题意:给你a,b, 你可以找任意一个k     算出a+k,b+k的最小公倍数,让最小公倍数尽量小,求出 ...

  6. Codeforces Round #323 (Div. 2) C. GCD Table map

    题目链接:http://codeforces.com/contest/583/problem/C C. GCD Table time limit per test 2 seconds memory l ...

  7. Codeforces Round #554 (Div. 2) C 数论

    https://codeforces.com/contest/1152/problem/C 题意 a和b,找到k,使得lcm(a+k,b+k)最小(a,b:1e9) 题解 设gcd=gcd(a+k,b ...

  8. Codeforces Round #651 (Div. 2) B. GCD Compression(数论)

    题目链接:https://codeforces.com/contest/1370/problem/B 题意 给出 $2n$ 个数,选出 $2n - 2$ 个数,使得它们的 $gcd > 1$ . ...

  9. Codeforces Round #767 (Div. 2)——B. GCD Arrays

    B. GCD Arrays 题源:https://codeforces.com/contest/1629/problem/B 题目大意 给出一段区间[l, r],可以进行操作(把任意两个数拿出来,把他 ...

随机推荐

  1. Javascript 2.3

    声明多个变量用逗号隔开    var teacher=30,stu=40; Javascript变量允许包含 美元符号  $

  2. HTML前序

    HTML基本格式 <!DOCTYPE html> //文档类型声明 <html lang="zh-cn"> //表示HTML文档开始,属性lang,属性值= ...

  3. 数组排序自定义comparator()

    案例1:现在有一个普通数组arr = [3,1,2,4,5,6,8,0,1]; 自定义一个排序方法: function createComparator(){ return function (obj ...

  4. 全志A33 lichee Linux内核原子操作(附实测代码)

    开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 QQ:641395230 原子操作是指不会被线程调度机 ...

  5. 移动Web端资源整合

    meta篇 viewreport 视窗宽度 <meta name="viewport" content="width=device-width,initial-sc ...

  6. 请确保 ASP.NET State Service (ASP.NET 状态服务)已启动 问题解决

    当iis部署的网站访问遇到如下错误时: 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同.如 ...

  7. 如何在hanlp词典中手动添加未登录词

     我们在使用hanlp词典进行分词的时候,难免会出现分词不准确的情况,原因是由于内置词典中并没有收录当前的这个词,也就是我们所说的未登录词,只要把这个词加入到内置词典中就可以解决类似问题,如何操作,下 ...

  8. [转]PostgreSQL命令行使用手册

    启动pgsl数据库 1 pg_ctl -D /xx/pgdata start 查看pgsl版本 1 pg_ctl --version 命令行登录数据库 1 psql -U username -d db ...

  9. 强制找回gitlab管理员密码

    强制找回gitlab管理员密码 最近使用gitlab的时候发现管理员密码忘记,现将找回密码的操作过程记录下来. 1.在gitlab登录窗口 如果密码忘记了登录不进入,可以先尝试点击登录框下方的Forg ...

  10. HTTP请求中 request payload 和 formData 区别?

    原文地址: http://www.cnblogs.com/tugenhua0707/p/8975615.html FormData和Payload是浏览器传输给接口的两种格式,这两种方式浏览器是通过C ...