题解 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)什 ...
随机推荐
- LaTeX技巧008:如何给文字添加阴影效果?
大家可以使用这个包:shadowtext宏包
- 合唱队形【dp】
链接:https://ac.nowcoder.com/acm/contest/1082/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言2621 ...
- Python中matplotlib模块的简单使用
测试代码如下: # encoding:utf-8 import numpy as np import matplotlib.pyplot as plt x = np.array([1,2,3,4,5, ...
- 酷卓 一键ROOT教程
待编辑,还没写完 哈哈 酷卓 一键ROOT教程 首先简单介绍下酷卓. 酷卓由我个人开发,主要为了用户获取ROOT简单化,傻瓜化.酷卓获取方式:加QQ群 766969447 群文件下载就行 1. 手动选 ...
- 记录 Docker 的学习过程 (网络篇)
打开2个会话,分别运行以下命令 # docker run -it -P --name nginx2 nginx #-P 端口随机映射 再打开一个会话查看 运行中的容器 # docker ps -aCO ...
- Wannafly Camp 2020 Day 6F 图与三角形 - 图论
把黑边视为无边,那么答案之和每个点的度数有关 #include <bits/stdc++.h> using namespace std; #define int long long int ...
- 【Unity|C#】基础篇(7)——属性(Property)/ 索引器(Indexer)
[学习资料] <C#图解教程>(第6章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu.c ...
- Java流,文件和I/O
java.io包中包含几乎所有可能永远需要在Java中执行输入和输出(I/ O)类.所有这些数据流代表一个输入源和输出目标. java.io包中的流支持多种数据,如基本类型,对象,本地化的字符等 流可 ...
- HTML的学习结构
HTML的学习结构 HTML的背景 HTML的创建 HTML的网页基本结构 HTML的基本标签 HTML的图像标签 HTML的链接标签 HTML的列表标签和表格标签 HTML的媒体元素(视频+音频) ...
- 测试准确率计算方法说明 pre.eq(target).float().sum().item()
测试准确率计算方法说明 pre.eq(target).float().sum().item() 待办 pred = logits.argmax(dim=1) correct += pred.eq(ta ...