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

题目大意:给你a和b,然后让你找到一个k,使得a+k和b+k的lcm.

学习网址:https://blog.csdn.net/yopilipala/article/details/89517933

具体思路:

 

AC代码:

 #include<bits/stdc++.h>
using namespace std;
# define ll long long
# define inf 0x3f3f3f3f
const int maxn = 2e5+;
vector<ll>sto;
void init(ll t)
{
ll tmp=t;
for(ll i=; i*i<=tmp; i++)
{
while(t%i==)
{
t/=i;
sto.push_back(i);
}
}
if(t!=)
sto.push_back(t);
}
ll cal(int t)
{
ll ans=1ll;
int pos=;
while(t)
{
if(t&)
{
ans=ans*sto[pos];
}
pos++;
t>>=;
}
return ans;
}
int main()
{
ll a,b;
scanf("%lld %lld",&a,&b);
if(a==b)
{
printf("0\n");
return ;
}
if(a>b)
swap(a,b);
init(b-a);
int maxstate=(<<(sto.size()))-;
ll minn=(1ll<<);
ll ans=(1ll<<);
for(int i=; i<=maxstate; i++)
{
ll tmp=cal(i);
ll t1=(a/tmp+)*tmp;//注意是先除
ll t2=(b/tmp+)*tmp;
ll w=t1*t2/__gcd(t1,t2);
if(w<=minn)
{
if(w<minn)
{
minn=w;
ans=t1;
}
else if(w==minn)
{
minn=w;
ans=min(ans,t1);
}
}
}
ll tmp=a*b/__gcd(a,b);
if(tmp<=minn)
{
minn=tmp;
ans=a;
}
printf("%lld\n",ans-a);
return ;
}

 

C. Neko does Maths(数论 二进制枚举因数)的更多相关文章

  1. 牛客网 牛客练习赛43 F.Tachibana Kanade Loves Game-容斥(二进制枚举)+读入挂

    链接:https://ac.nowcoder.com/acm/contest/548/F来源:牛客网 Tachibana Kanade Loves Game 时间限制:C/C++ 1秒,其他语言2秒 ...

  2. 51nod 1363 最小公倍数的和 欧拉函数+二进制枚举

    1363 最小公倍数之和 题目来源: SPOJ 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 160 给出一个n,求1-n这n个数,同n的最小公倍数的和.例如:n = 6,1,2,3 ...

  3. Codeforces C.Neko does Maths

    题目描述: C. Neko does Maths time limit per test 1 second memory limit per test 256 megabytes input stan ...

  4. UVA 1151二进制枚举子集 + 最小生成树

    题意:平面上有n个点(1<=N<=1000),你的任务是让所有n个点连通,为此, 你可以新建一些边,费用等于两个端点的欧几里得距离的平方.另外还有q(0<=q<=8)个套餐(数 ...

  5. Good Bye 2015B(模拟或者二进制枚举)

    B. New Year and Old Property time limit per test 2 seconds memory limit per test 256 megabytes input ...

  6. Poj(2784),二进制枚举最小生成树

    题目链接:http://poj.org/problem?id=2784 Buy or Build Time Limit: 2000MS   Memory Limit: 65536K Total Sub ...

  7. POJ 2436 二进制枚举+位运算

    题意:给出n头牛的得病的种类情况,一共有m种病,要求找出最多有K种病的牛的数目: 思路:二进制枚举(得病处为1,否则为0,比如得了2 1两种病,代号就是011(十进制就是3)),首先枚举出1的个数等于 ...

  8. hdu 3118(二进制枚举)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3118 思路:题目要求是去掉最少的边使得图中不存在路径长度为奇数的环,这个问题等价于在图中去掉若干条边, ...

  9. HDU 5025Saving Tang Monk BFS + 二进制枚举状态

    3A的题目,第一次TLE,是因为一次BFS起点到终点状态太多爆掉了时间. 第二次WA,是因为没有枚举蛇的状态. 解体思路: 因为蛇的数目是小于5只的,那就首先枚举是否杀死每只蛇即可. 然后多次BFS, ...

随机推荐

  1. FLIR 相机采集程序

    https://www.ptgrey.com/Downloads/GetSecureDownloadItem/11048 Grasshopper3 4.1 MP Mono USB3 Vision (C ...

  2. Java8-2-Lambda表达式实战-一句话实现Map中按照Value排序

    在上一讲中, 我们着重的讲了表达式的一些基础知识和基本的使用, 今天我们来实战一把, 对Map的Value值排序进行简化. 在以前的思路我们的做法如下: /** * * Map根据value排序; * ...

  3. boost学习目录

    Boost之数值转换lexical_cast https://www.cnblogs.com/TianFang/archive/2013/02/05/2892506.html Boost之字符串算法s ...

  4. 501. Find Mode in Binary Search Tree

    Given a binary search tree (BST) with duplicates, find all the mode(s) (the most frequently occurred ...

  5. maven笔记学习

    一.修改setting.xml文件中的镜像 在导入他人项目或者在导入项目时,我们会出现在项目中不能识别maven配置的库文件的情况那么我们可以重新下载本地库, 首先我们可以修改我们安装的maven环境 ...

  6. JS 设计模式五 -- 命令模式

    概念 命令模式中的命令(command) 指的是 一个执行某些待定事情的指令. 用一种松耦合的方式来设计程序,使得请求发送者和请求接收者能够消除彼此之间的耦合关系. 例子 假设html结构如下: &l ...

  7. Neutron vxlan network--L2 Population

    L2 Population 是用来提高 VXLAN 网络 Scalability 的.   通常我们说某个系统的 Scalability 好,其意思是: 当系统的规模变大时,仍然能够高效地工作. L2 ...

  8. webpack优化相关操作

    1.缩小文件搜索的范围 • 优化loader配置 尽量精确使用 include 只命中需要的文件.    module.exports = {      module: {        rules: ...

  9. Flutter自定义路由PageRouteBuilder

    自定义路由翻转,渐变,左右滑动 方法如下: 首先继承 PageRouteBuilder ,重写方法 将MaterialPageRoute改为showSearch import 'package:flu ...

  10. AtCoder ABC 042D いろはちゃんとマス目 / Iroha and a Grid

    题目链接:https://abc042.contest.atcoder.jp/tasks/arc058_b 题目大意: 给定一个 H * W 的矩阵,其中左下角 A * B 区域是禁区,要求在不踏入禁 ...