https://ac.nowcoder.com/acm/contest/4853/D
已知a b c k 求出x y z。
考虑ax+by+cz=k,那么我们移项得ax+by=k-cz,如果k在剪掉cz之后依然存在解。
那么gcd(a,b)∣k-cz。
设g=gcd(a,b)那么现在就是求Tg+cz=k的解,
并且要保证z尽量小。我们做一次exgcd就行了。
接下来就是求ax+by=k-cz的非负解,再做一次exgcd就行了。
如果要保证做法正确的话,需要用a,b,c分别作为第三个数去求解。

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<cstring>
using namespace std;
typedef long long ll;
int gcd(int a, int b) {return b ? gcd(b, a % b) : a;
}
int exgcd(int a,int b,ll &x,ll &y)
{if(!b){x=1;y=0;return a;}int r=exgcd(b,a%b,y,x);y-=a/b*x;return r;
}
int a, b, c;
ll k, x, y;
ll resx, resy, resz;
bool solve(int a, int b, int c, ll k) {ll d = gcd(a, b);ll r = exgcd(d, c, x, y);y *= k / r;y=(y%(d/r)+d/r)%(d/r);//求出z的最小值 resz = y;k -= c * y;d = exgcd(a, b, x, y);x*=k/d;x=(x%(b/d)+b/d)%(b/d);//求出x的最小值 y=(k-a*x)/b;resx = x, resy = y;if (resx >= 0 && resy >= 0 && resz >= 0)return true;return false;
}
int main()
{scanf("%d %d %d %lld", &a, &b, &c, &k);if (solve(a, b, c, k)) {printf("%lld %lld %lld\n", resx, resy, resz);return 0;}if (solve(a, c, b, k)) {printf("%lld %lld %lld\n", resx, resz, resy);return 0;}if (solve(b, c, a, k)) {printf("%lld %lld %lld\n", resz, resx, resy);return 0;}return 0;
}

斩杀线计算大师 三元一次方程解相关推荐

  1. 牛客练习赛60 ~ 斩杀线计算大师

    题目传送 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K Special Judge, 64bit IO Format: %lld 题目描述 算 ...

  2. 牛客练习赛60 D斩杀线计算大师

    链接 点击跳转 题解 出题人的做法被hack了,不过幸亏他写了spj,数据可以保证是对的 这题的同余最短路做法是对的,而且还挺裸 关于同于最短路看这里 代码 #include <bits/std ...

  3. c语言解三元一次方程组_在R里面对三元一次方程求解

    三元一次方程大家应该是不陌生的,形如 aX + bY + cZ = d 的就是,其中X,Y,Z是未知的变量,a,b,c,d 都是已知的常量,通常呢,需要至少3个没有线性关系的已知等式才能求唯一解.例如 ...

  4. 方程组的直接解法和迭代法 python_基于任务驱动的翻转课堂线上教学 ——以《解二元一次方程组复习课》为例...

    基于任务驱动的翻转课堂线上教学 --以<解二元一次方程组复习课>为例 1 线上教学案例设计前的思考 疫情期间,一家长群对一元一次方程和二元一次方程组进行了讨价还价,认为学个知识点还收起费来 ...

  5. 用python解三元一次方程并绘图_用for循环解三元一次方程组题目的思路

    用程序的思路去解决方程 一开始我碰到三元一次方程组相关的题目我是非常懵逼的,因为当年学的编程数学全还给老师了,自己用数学方法都解不出来,更何况用程序解了. 然而,在尝试用程序解题的过程中,赫然发现,只 ...

  6. 用for循环解三元一次方程组题目的思路

    用程序的思路去解决方程 一开始我碰到三元一次方程组相关的题目我是非常懵逼的,因为当年学的编程数学全还给老师了,自己用数学方法都解不出来,更何况用程序解了. 然而,在尝试用程序解题的过程中,赫然发现,只 ...

  7. 解三元一次方程组的算法,C语言,Python,Java实现

    解三元一次方程组是数学中的一个重要问题,在许多实际应用中都有广泛的应用.比如,化学反应.工程设计.地理测量等都需要求解方程组.本文将分别用C语言.Python和Java实现解三元一次方程组的算法. 解 ...

  8. 解三元一次方程组的计算机,解三元一次方程组

    三元一次方程组解法 主要的解法就是加减消元法和代入消元法,通常采用加减消元法,若方程难解就用代入消元法,因题而异.其思路 都是利用消元法逐步消元. 三元一次方程组的应用 三元一次方程简单应用 {x+2 ...

  9. c语言编程解三元一次方程组,三元一次方程组的解是 [] A.B.C.D

    三元一次方程: 含有三种不同字母构成的方程,并且含有未知数的项的次数是1的整式方程,一般有三条三元一次方程才能解出未知数的解,我们那这种方程叫三元一次方程,如x+y-z=1,2a-3b+c=0等都是三 ...

最新文章

  1. Matlab编程与数据类型 -- 函数M文件的组成
  2. js控制鼠标移动_原生JS封装可拖拽效果
  3. python 文件读写模式r,r+,w,w+,a,a+的区别(附代码示例)
  4. k8s sealos应用安装及应用包制作教程
  5. 利用python将txt文件中的内容写入Excel文件中
  6. 【Java基础】 JQuery的常用操作
  7. 88.搭建git服务器 安装与使用gitlab gitlab备份与恢复
  8. ADO.NET Entity Framework 学习(1)
  9. C1007: 无法识别的标志“-Ot”
  10. WebService与RestAPI 、SoapAPI
  11. arcgis里面如何删除标记_ArcGIS技术篇——标记符号制作
  12. IndentationError:unindent does not match any outer indentation解决方案
  13. 嵌入式学习笔记7——LCD1602液晶屏
  14. killall为什么有时候会找不到进程?
  15. Java语言制作动画
  16. 计算机声音在线模拟,计算机声场模拟软件ODEON及其应用.pdf
  17. 使用树莓派4b和OpenCV做机械臂夹取
  18. 洛谷刷题——P1255 数楼梯
  19. Solidity如何通过代码减少gas消耗
  20. 【数据结构与算法】二叉树题目很难?一句话秒杀基础二叉树题目

热门文章

  1. keras.layers.Reshape方法
  2. day10 敏感词过滤器
  3. 动漫剪纸可爱粉星空专用PPT模板分享
  4. 2016年全国管理类硕士研究生考试——综合能力复习心得
  5. unity 基于FGUI编辑器导出的图集切图工具
  6. ubuntu文件比较工具Meld
  7. Self-examination 自学考试 大学生自考 Students Self And Self Books 自考图书
  8. 5个NFT趋势将使社交媒体受众进入web3
  9. 禅道管理工具的安装教程
  10. MATLAB快速入门(二):矩阵