LINK:斩杀线计算大师

给出a,b,c三个值 求出 ax+by+cz=k的x,y,z的正整数解 保证一定有解。

考虑两个数的时候 ax+by=k 扩展欧几里得可以解决。

三个数的时候 一个暴力的想法暴力枚举c的系数z 然后进行计算扩欧 期望复杂度是过不了的 但是数据保证有解那么就很容易通过了。

考虑 (a,b)|k-cz 设g=(a,b) Tg=k-cz 对于这个式子 我们发现z越小那么tg越大 那么a和b更容易是正整数 且g|k-sz是ax+by=k-cz的必要条件。

所以我们解出 Tg=k-cz这个式子的答案并且让z尽可能的小 可以发现此时一定有解 且构造出的解cz一定比其他cz更优于满足答案。

所以两次扩展欧几里得解决。

const ll MAXN=1010;
ll a,b,c,k;
ll x,y;
inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
inline ll exgcd(ll a,ll b)
{
if(!b){x=1;y=0;return a;}
ll w=exgcd(b,a%b);
ll z=x;x=y;y=z-a/b*y;
return w;
}
signed main()
{
freopen("1.in","r",stdin);
get(a);get(b);get(c);get(k);
ll g=gcd(a,b);
ll gg=exgcd(g,c);
ll s=k/gg;
y=y*s;x=x*s;
ll w1=g/gg;
ll w2=c/gg;
if(y<0)
{
ll sum=(-y)%w1==0?(-y)/w1:(-y)/w1+1;
y=y+sum*w1;
x=x-sum*w2;
}
ll sum=y/w1;
y-=sum*w1;
x+=sum*w2;
ll cc=y;
k=x*g;
gg=exgcd(a,b);
s=k/gg;
y=y*s;x=x*s;
w1=a/gg;w2=b/gg;
if(x<0)
{
ll sum=(-x)%w2==0?(-x)/w2:(-x)/w2+1;
x=x+sum*w2;
y=y-sum*w1;
}
if(y<0)
{
ll sum=(-y)%w1==0?(-y)/w1:(-y)/w1+1;
x=x-sum*w2;
y=y+sum*w1;
}
printf("%lld %lld %lld\n",x,y,cc);
return 0;
}

虽然正解比暴力长很多 但是打完之后感觉对扩展欧几里得的理解更深了。

以后写的话不会很迷了。

果然做难题是搞定知识的重要途径。

牛客练习赛60 D 斩杀线计算大师的更多相关文章

  1. 牛客练习赛60 A—F题解(缺E题)

    本蒟蒻这次只过了三题 赛后学习了一下出题人巨佬的标码(码风比我好多了 贴的代码有些是仿出题人)现在将自己的理解写下来与大家分享 A这个题一分析就是每个数字都会与所有数字&一下 (a&a ...

  2. 牛客练习赛42 C 反着计算贡献

    https://ac.nowcoder.com/acm/contest/393/C 题意 给你一个矩阵, 每次从每行挑选一个数,组成一个排列,排列的和为不重复数字之和,求所有排列的和(n,m<= ...

  3. 牛客练习赛60 E 旗鼓相当的对手

    LINK:旗鼓相当的对手 考场上遇到这种简单的树形dp优化题目我真的不一定能写出来.. 虽然这道题思路很简单 设f[i][j]表示距i距离为j的点的个数 g[i][j]表示距i距离为j的点权和. 可以 ...

  4. 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A

    牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...

  5. 最小生成树--牛客练习赛43-C

    牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 ​ 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...

  6. [堆+贪心]牛客练习赛40-B

    传送门:牛客练习赛40 题面: 小A手头有 n 份任务,他可以以任意顺序完成这些任务,只有完成当前的任务后,他才能做下一个任务 第 i 个任务需要花费  x_i 的时间,同时完成第 i 个任务的时间不 ...

  7. 牛客练习赛48 A· 小w的a+b问题 (贪心,构造,二进制)

    牛客练习赛48 A· 小w的a+b问题 链接:https://ac.nowcoder.com/acm/contest/923/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C ...

  8. 牛客练习赛64 D【容斥+背包】

    牛客练习赛64 D.宝石装箱 Description \(n\)颗宝石装进\(n\)个箱子使得每个箱子中都有一颗宝石.第\(i\)颗宝石不能装入第\(a_i\)个箱子.求合法的装箱方案对\(99824 ...

  9. 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D

    目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...

随机推荐

  1. css完美解决网页在iphoneX的头部刘海显示问题

    一.解决iphonX白条,网站扩展到整个屏幕 网页在iphoneX的浏览器屏幕显示上,默认情况下在头部的2侧会出现白条背景,网站被限制在了一个“安全区域”内,移除白色背景的方法 方法一:设置body的 ...

  2. 从Linux源码看Socket(TCP)Client端的Connect

    从Linux源码看Socket(TCP)Client端的Connect 前言 笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情. 今天笔者就来从Linux源码的 ...

  3. 列拖拽顺序调整-sortable.js使用

    最近在做一个单表统计功能,涉及到一个查询列配置,但是查询出来的列顺序,可以进行配置,通过写列的排序当然阔以,但是方法就不美丽了.所以,在网上搜了一下拖拽的组件,最终定位Sortable.js,简单易用 ...

  4. rpm部分命令解读

    rpm部分命令解读 rpm---RedHat Package Manger---打包及安装工具 rpm参数列表   rpm -a rpm -q < rpm package name> 解读 ...

  5. HBase写入异常RejectedExecutionException

    HBase在大数据量并发写入时,写一段时间后HBase监控界面出现告警,写入程序日志里频繁出现异常java.util.concurrent.RejectedExecutionException: 从异 ...

  6. PE文件格式详解(五)

    0x00 前言 前一篇了解了区块虚拟地址和文件地址转换的相关知识,这一篇该把我们所学拿出来用用了.这篇我们将了解更为重要的一个知识点——输入表和输出表的知识. 0x01 输入表 首先我们有疑问.这个输 ...

  7. Springboot下实现阿里云短信验证功能(含代码)

    Springboot下实现阿里云短信验证功能 一 开通阿里云短信服务 阿里云官网注册登录 找到短信服务并开通 打开短信服务的管理台 在国内消息那栏中添加签名管理和模板管理(按照格式要求去写) 在右上角 ...

  8. 数据可视化之powerBI基础(八)PowerBI的表格,你真的会用吗

    https://zhuanlan.zhihu.com/p/64413000 在PowerBI的可视化对象中,还有两个「表格」对象,表格的作用不仅可以在报表提供明细数据,还经常用来测试度量值的返回结果, ...

  9. IOS中input键盘事件keyup 的兼容解决办法

    用input监听键盘keyup事件,在安卓手机浏览器中是可以的,但是在ios手机浏览器中很慢,用输入法输入之后,并未立刻相应keyup事件. 解决办法: 在ios设备上可以用html5的input事件 ...

  10. 用Graphviz画简单依赖图示例

    代码: digraph module { 0 [label="global.h"]; 1 [label="bst_operator.c"]; 2 [label= ...