题目链接: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. [OIDC in Action] 3. 基于OIDC(OpenID Connect)的SSO(添加Github OAuth 2.0的支持)

    在上上一篇基于OIDC的SSO的登录页面的截图中有出现QQ登录的地方.这个其实是通过扩展OIDC的OpenID Provider来实现的,OpenID Provider简称OP,OP是OIDC的一个很 ...

  2. 类Scanner

    什么是Scanner类 一个可以解析基本类型和字符串的简单文本扫描器. 引用类型使用步骤 1:导包:使用import关键字导包,在类的所有代码之前导包,引入要使用的类型. java.lang包下的所有 ...

  3. 每次用 selenium 操作浏览器都还原了 (比如没有浏览器历史记录)

    每次用 selenium 操作浏览器都还原了 (比如没有浏览器历史记录)

  4. 解决win环境下访问本机虚拟机中centos7 ftp服务器的问题

    inux搭建ftp服务器 1.安装软件: yum install vsftpd 2.修改配置文件vsftpd.conf: vim /etc/vsftpd/vsftpd.conf 把anonymous_ ...

  5. MRP没生成MRP汇总表

    设置:工作日历延长

  6. Flutter之内置动画(转)

    AnimatedContainerAnimatedCrossFadeHeroAnimatedBuilderDecoratedBoxTransitionFadeTransitionPositionedT ...

  7. iOS presentViewController 方法引起的问题

    有个需求,在项目中随时使用 presentViewController来显示一个界面,比如弹窗提示或者人脸解锁,都是在任何情况都可能出现的. 在presentViewController 调用前,已经 ...

  8. python中的__dict__,__getattr__,__setattr__

    python class 通过内置成员dict 存储成员信息(字典) 首先用一个简单的例子看一下dict 的用法 class A(): def __init__(self,a,b): self.a = ...

  9. 「NOI2013」树的计数 解题报告

    「NOI2013」树的计数 这什么神题 考虑对bfs重新编号为1,2,3...n,然后重新搞一下dfs序 设dfs序为\(dfn_i\),dfs序第\(i\)位对应的节点为\(pos_i\) 一个暴力 ...

  10. Spring Boot整合Elasticsearch

    Spring Boot整合Elasticsearch   Elasticsearch是一个全文搜索引擎,专门用于处理大型数据集.根据描述,自然而然使用它来存储和搜索应用程序日志.与Logstash和K ...