题解 P3951 小凯的疑惑】的更多相关文章

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-…
洛谷P3951 小凯的疑惑 原题 题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在 小凯无法准确支付的商品. 输入输出格式 输入格式: 两个正整数 a 和 b,它们之间用一个空格隔开,表示小凯中金币的面值. 输出格式: 一个正整数 N,表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值. 输入…
P3951 小凯的疑惑 题解 题意也就是求解不能用 ax+by 表示的最大数 ans(a,b,x,y,都是正整数) 给定 a ( =7 ) ,  b ( =3 ) 我们可以把数轴非负半轴上的数按照a的剩余类分成a列,如上图 所以 a 的倍数一定可以取到,此时 y=0,那么我们把 a 的倍数这一列划掉 然后我们再考虑 y!=0的情况: (1)b的倍数一定可以取到,此时 x=0 (2)和b  %a  同余的数字一定可以取到,其实就是确定了 y,then确定了by,加上 a 的倍数 所以我们就可以把…
目录 题面 题目链接 题目描述 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例: 输出样例: 说明 思路 证明 AC代码 include<bits/stdc++.h> 题面 题目链接 P3951 小凯的疑惑 题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在 小凯无法准确支付的商品. 输入输出格…
前言: 数学题,对于我这种菜B还是需要多磨啊 Simple 首先它问不是好数的数量,可以转化为用总数量减去是好数的数量. 求"好数"的数量: 由裴蜀定理得,如果某个数\(i\)不能整除\(gcd(n,m)\),那么一定不是好数. 所以,我们把\(n,m,q\)分别除以\(gcd(n,m)\),是不影响得出的"好数"数量的. 好,那么现在\(n,m\)就互质了. 现在,就把问题转化为了(用比较形象化的语言来说,就是)有\(n,m\)互质,求\([1,q]\)中有多少个…
2021.07.20 P3951 小凯的疑惑(最大公因数,未证) 重点: 1.最大公因数 题意: 求ax+by最大的表示不了的数(a,b给定 x,y非负). 分析: 不会.--2021.07.20 代码如下: #include<cstdio> #include<algorithm> #include<iostream> using namespace std; #define int long long int x,y; inline int read(){ int s…
题目详见:[P3951]小凯的疑惑 首先说明:此题为一道提高组的题.但其实代码并没有提高组的水平.主要考的是我们的推断能力,以及看到题后的分析能力. 分析如下: 证明当k>ab-a-b时,小凯可以准确支付这个物品. 显然,可以列出一个不定方程ma+nb=k,(m n,为未知数)由于m,n是金币个数,所以m>-1,n>-1, 这个不定方程的通解为m=m0+bt,n=n0-at,(仅仅为写法的一种,不过这样写最方便,m0,n0为方程的一组解), m0+bt>-1,n0-at>-1…
传送门:Problem P3951 https://www.cnblogs.com/violet-acmer/p/9827010.html 参考资料: [1]:http://m.blog.sina.com.cn/s/blog_b046a49001015zun.html#page=1 题解: 两个互素的正整数a,b的非负线性组合ax+by不能表示的最大整数为 a*b-a-b; 证明: 例如a=5,b=6,则不能表示的最大整数为19,换言之所有大于19的整数都可以表示成ax+by,其中x,y为非负整…
题目链接 一开始看到这题,我的内心是拒绝的. 以为是同余类bfs,一看数据1e9,发现只能允许O(1)的算法,数学还不太好,做不出来,其实应该打表找规律. 看到网上的题解,如果两个都必须拿,结果一定是a*b,由于对称性,如果可以不拿,就减(a+b). 结果就是a*b-a-b. #include<iostream> #include<cstdio> using namespace std; long long a,b; int main() { scanf("%lld%ll…
传送门 题意:求出a和b不能通过线性组合(即n*a+m*b)得到的最大值: 思路:摘自洛谷: 不妨设 a<b 假设答案为 x 若 x≡m*a ( mod b )(1≤m≤b−1) (mod3)什么意思? [答]: 后面的 mod 3 表示:相对于 的模,即用 来除,得到相应的余数 举例来说,+3m=(mod3),+3m 用 来除 的余数是 即 x=m*a+n*b (1≤m≤b−1) 显然当n≥0 时 x 可以用 a,b 表示出来,不合题意. 因此当 n = -1 时 x 取得最大值,此时 x=m…