题解 P3951 小凯的疑惑
数论极菜的小萌新我刚看这题时看不懂exgcd做法的题解,后来在网上找到了一篇博客,感觉代码和推导都更加清新易懂,于是在它的基础上写了题解qwq
分析
两数互质,且有无限个,想到不定方程ax+by=gcd(a,b)=1,并且是一定有解的
对于合法的数k,可以表示为 k=a×x1+b×y1(x1>=0,y1>=0)
找最大不合法的数,那么比它大的数(如k+1)一定是合法的,于是题目变成找最大的k使k-1不合法
由于本题中ax+by=1,对于不合法的数k-1,可以表示为
k-1=ax1+by1-(ax0+by0)=a(x1-x0)+b(y1-y0)
由ax0+by0=1,x0和y0必定不能同号
- 当 y0<0 ,有y1-y0>0 ,x0>0,只要x1-x0<0 则k-1不合法
- 当 x0<0 ,有x1-x0>0 ,y0>0,只要y1-y0<0 则k-1不合法
所以如果要k-1不合法,那么肯定所有x,y情况都不合法,即两式都要成立
所以对于1式,得x1<x0且x0>0,当x1<0自然无解,当x1>=0时,式1成立的条件是x1<所有非负x0,即x1<x'(x'是ax+by=1中x最小且非负的整数解),那么最大的整数x1=x0-1,同理y1=y''-1 (y'' 是ax+by=1中y最小且非负的整数解),使得两式都不合法, 而且k最大
ans=(x'-1)a+(y''-1)b-1
我们学到了什么
看范围 --1e9,互质等字眼,我们要用O(logn)的扩展欧几里得
转化问题 ——找最大的k使k-1不合法
式子标准化 ——将k-1用a(x1-x0)+b(y1-y0)的形式表示
探究不合法的条件 ——x1-x0<0,y1-y0'<0
贪心找最值 ——x1=x0-1,y1=y0-1
#include<cstdio>
using namespace std;
#define int long long
int a,b,x,y;
inline void exgcd(int a,int b,int &x,int &y) {
if (!b) x=1,y=0;
else exgcd(b,a%b,y,x),y-=a/b*x;
}
signed main() {
scanf("%lld%lld",&a,&b);
exgcd(a,b,x,y),x=(x+b)%b,y=(y+a)%a;
printf("%lld",(x-1)*a+(y-1)*b-1);
}
关于进一步的ab-a-b做法推荐这个博客
还有一种比较简单的理解方法:这个博客
题解 P3951 小凯的疑惑的更多相关文章
- 2017提高组D1T1 洛谷P3951 小凯的疑惑
洛谷P3951 小凯的疑惑 原题 题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想 ...
- P3951 小凯的疑惑
P3951 小凯的疑惑 题解 题意也就是求解不能用 ax+by 表示的最大数 ans(a,b,x,y,都是正整数) 给定 a ( =7 ) , b ( =3 ) 我们可以把数轴非负半轴上的数按照a的 ...
- 洛谷 P3951 小凯的疑惑 找规律
目录 题面 题目链接 题目描述 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例: 输出样例: 说明 思路 证明 AC代码 include<bits/stdc++.h> 题面 ...
- 联赛膜你测试20 T1 Simple 题解 && NOIP2017 小凯的疑惑 题解(赛瓦维斯特定理)
前言: 数学题,对于我这种菜B还是需要多磨啊 Simple 首先它问不是好数的数量,可以转化为用总数量减去是好数的数量. 求"好数"的数量: 由裴蜀定理得,如果某个数\(i\)不能 ...
- 2021.07.20 P3951 小凯的疑惑(最大公因数,未证)
2021.07.20 P3951 小凯的疑惑(最大公因数,未证) 重点: 1.最大公因数 题意: 求ax+by最大的表示不了的数(a,b给定 x,y非负). 分析: 不会.--2021.07.20 代 ...
- Luogu [P3951] 小凯的疑惑
题目详见:[P3951]小凯的疑惑 首先说明:此题为一道提高组的题.但其实代码并没有提高组的水平.主要考的是我们的推断能力,以及看到题后的分析能力. 分析如下: 证明当k>ab-a-b时,小凯可 ...
- 洛谷 P3951 小凯的疑惑(数学)
传送门:Problem P3951 https://www.cnblogs.com/violet-acmer/p/9827010.html 参考资料: [1]:http://m.blog.sina.c ...
- 洛谷 P3951 小凯的疑惑
题目链接 一开始看到这题,我的内心是拒绝的. 以为是同余类bfs,一看数据1e9,发现只能允许O(1)的算法,数学还不太好,做不出来,其实应该打表找规律. 看到网上的题解,如果两个都必须拿,结果一定是 ...
- 洛谷P3951 小凯的疑惑 - 数学 /扩展欧几里得
传送门 题意:求出a和b不能通过线性组合(即n*a+m*b)得到的最大值: 思路:摘自洛谷: 不妨设 a<b 假设答案为 x 若 x≡m*a ( mod b )(1≤m≤b−1) (mod3)什 ...
随机推荐
- 牛客网 —— 爱奇艺2020校招C++方向笔试题 总结
错了5,6个,主要集中在数据库和操作系统上. C++还需要提高熟练度. 总结 第6题: 折半查找树:根据二分查找构造得到的树,它一定是一个二叉排序树,是一个特殊的二叉排序树. (接近于平衡二叉 ...
- C# WPF计算器界面(Calculator Design With Animations)
时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...
- 梯度下降算法&线性回归算法
**机器学习的过程说白了就是让我们编写一个函数使得costfunction最小,并且此时的参数值就是最佳参数值. 定义 假设存在一个代价函数 fun:\(J\left(\theta_{0}, \the ...
- yum装包报错
[root@iZ6wefn2kl6064uuaxuwetZ ~]# yum –y install gcc pcre-devel zlib-devel openssl-develLoaded plu ...
- 杭电oj_2047——阿牛的EOF牛肉串(java实现)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2047 思路:先是列出了四个,但是没发现规律,然后开始画递归树,在其中找到了规律,算出递归式为f(n) ...
- [HNOI2013] 消毒 - 二分图匹配
容易发现 \(a,b,c\) 中至少有一个 \(\leq 17\) 不妨将其调剂为 \(a\),那么我们可以暴力枚举哪些 \(x\) 片片要被直接削掉,剩下的拍扁成二维情况 二维时,如果有一个格子是 ...
- 对Ajax返回的json数据做处理报错
这个错误出现的原因是我再返回数据为json时,我页面的Ajax没有指定dataType: 'json'
- PATA-1151 LCA in a Binary Tree
题意:根据前序和中序建立树,寻找两个点的LCA. 我在之前的博客中写了关于LCA的多种求法. https://www.cnblogs.com/yy-1046741080/p/11505547.html ...
- yii2表单提交CSRF验证
Yii2表单提交默认需要验证CSRF,如果CSRF验证不通过,则表单提交失败,解决方法如下: 第一种解决办法是关闭Csrf public $enableCsrfValidation = false; ...
- phpstorm实用技巧
1.切换php代码版本提示 1.1找到External Libraries右键点击(configure PHP Include Paths) 1.2切换提示版本(在这里切换版本)确定即可 2.生成ge ...