求使得lcm(a+k,b+k)最小的时候的最小k。
根据同余定理。
a%c==0 b%c == 0 --》(a-b)%c ==0
所以gcd(a,b)=gcd(a,fabs(b-a))
这个题目中 b-a是固定的,所以gcd(a+k,b+K)的值就在于a+k与b-a的关系。
我们知道,如果a+k有b-a的因数那么gcd就能变得更小。
基于这个,我们遍历所有b-a的因数,来寻找是的lcm最小的时候的最小k。

#include<iostream>
#include<string>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#include<climits>
#include<stack>
#include<vector>
#include<queue>
#include<set>
#include<map>
//#include<regex>
#include<cstdio>
#define up(i,a,b)  for(int i=a;i<b;i++)
#define dw(i,a,b)  for(int i=a;i>b;i--)
#define upd(i,a,b) for(int i=a;i<=b;i++)
#define dwd(i,a,b) for(int i=a;i>=b;i--)
//#define local
typedef long long ll;
const double esp = 1e-6;
const double pi = acos(-1.0);
const int INF = 0x3f3f3f3f;
const int inf = 1e9;
using namespace std;
int read()
{char ch = getchar(); int x = 0, f = 1;while (ch<'0' || ch>'9') { if (ch == '-')f = -1; ch = getchar(); }while (ch >= '0' && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); }return x * f;
}
typedef pair<int, int> pir;
ll a, b;
ll dist;
ll ans = 0;
ll sum = 1e15;
ll gcd(ll a, ll b)
{return b == 0 ? a : gcd(b, a%b);
}
int main()
{cin >> a >> b;if (a > b)swap(a, b);//a大b小if (b%a == 0) { cout << 0 << endl; return 0; }//是倍数的时候就不需要判断了dist = b - a;//距离if (dist < a)//距离比a小,那么a肯定能化成dist的倍数,此时gcd=dist肯定是最小的{cout << (dist - a % dist) % dist << endl;//再模一下就能保证输出再0-dist-1return 0;}else{for (int i = 1; i*i <= dist; i++){if (dist%i == 0)//如果是因数{ll temp = i - (a%i);//算k值ll sumtemp  = (a + temp)*(b + temp) / gcd(a + temp, b + temp);if (sumtemp == sum){if (temp < ans)ans = temp;}if (sumtemp < sum){sum = sumtemp;ans = temp;}temp = dist / i - (a % (dist / i));//判断dist/i的大小sumtemp = (a + temp)*(b + temp) / gcd(a + temp, b + temp);if (sumtemp == sum)if (temp < ans)ans = temp;if (sumtemp < sum)sum = sumtemp, ans = temp;}}cout << ans << endl;}return 0;
}

不过看别人的代码发现有更简单的方法,虽然思路差不多,不过我看大佬连gcd都没有用上。
大概就是
ans=min(ans,i-a)
ans=min(ans,dist/i-a)。。没太明白为什么这样就一定能满足

C - Neko does Maths 数论相关推荐

  1. CF1152C Neko does Maths

    题目传送门 CF1152C Neko does Maths 题目描述 Neko loves divisors. During the latest number theory lesson, he g ...

  2. 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: •思路 时隔很久,又重新做这个题 温故果然可以知新❤ ...

  3. 【CodeForces - 1152C 】Neko does Maths(数学数论,lcm,gcd性质)

    题干: 给出a,b<=1e9,你要找到最小的k使得lcm(a+k,b+k)尽可能小,如果有多个k给出同样的最小公倍数,输出最小的一个k. 解题报告: 因为题目中k太多了,先化简一下公式,假设a& ...

  4. C. Neko does Maths

    contents: 题 题意 思路 AC代码 题 Neko loves divisors. During the latest number theory lesson, he got an inte ...

  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. Neko does Maths

    https://codeforces.com/contest/1152/problem/C 题解: 扩展欧几得里定理 /* *@Author: STZG *@Language: C++ */ #inc ...

  7. 数论(一)——素数,GCD,LCM

    这是一个数论系列:) 一.素数 ×费马小定理 Theorem: 设 p 是一个素数,a 是一个整数且不是 p 的倍数,那么 很遗憾,费马小定理的逆定理是不成立的.对 a = 2,满足的非素数 n 是存 ...

  8. 【数论总结】-----励志写好一篇数论总结↖(^ω^)↗//正在施工...未完工

    近期学了学数论,来写一波总结吧. (1)排列组合,比较基础的东西了吧.//只写个概念吧,(逃: 概念:就是从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合: ...

  9. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

最新文章

  1. jdbc connection为什么放在webINF的lib里面
  2. 插入,冒泡,选择,快速排序,二分查找
  3. mysql,int(5)、int(10)啥区别联系
  4. APM - Javassist 入门 生成一个简单类
  5. 2.1 《数据库系统概论》关系数据结构及形式化定义(关系、关系模式、关系数据库)
  6. Azkaban安装部署,配置文件配置,启动等
  7. python函数参数列表中的*与**
  8. 怎么改变github的用户名字,身份?
  9. eclipse控制台自动换行不分割单词_这 7 个实用的文档技巧,不掌握就太可惜了...
  10. ClickHouse 详细集群部署方案
  11. 第5章 Python 数字图像处理(DIP) - 图像复原与重建14 - 逆滤波
  12. java web 刷新_Java Web项目的保存和刷新
  13. 你不懂js系列学习笔记-类型与文法- 02
  14. oracle当查询没有输出返回0,ORACLE技术问题专家问答五则
  15. 【JAVA SE】第十五章 ArrayList、LinkedList、HashMap和HashSet
  16. 直接访问WEB-INF目录下的JSP页面的方法
  17. 拯救安卓手机的数据(无法进入系统只能打开recovery)
  18. HOOK NtCreateSection
  19. 芯片AD库导入(贸泽)
  20. 自动轮播图html css js代码,js轮播(自动轮播图html代码)

热门文章

  1. 某bobo在线视频APP下载暴力流逆向
  2. 雅居乐陈卓林第二人生业主文化节收官,记录下这些天的温情与感动
  3. Java书写文字格斗游戏
  4. 大家都可以学的制作个人网
  5. TI RTOS BLE CC2642 看门狗 Watcdog
  6. 【Unity Shader】聚光灯体积光效果的简单实现
  7. 世界坐标系,图像坐标系,车体坐标系,雷达坐标系转换
  8. 【基础逻辑】对位乘法与升多项式子项根号——柯西不等式
  9. 看完这些治愈的VR全景风景,相信你一定会心驰神往
  10. 如何进入docker系统