牛客练习赛60 D 斩杀线计算大师
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 斩杀线计算大师的更多相关文章
- 牛客练习赛60 A—F题解(缺E题)
本蒟蒻这次只过了三题 赛后学习了一下出题人巨佬的标码(码风比我好多了 贴的代码有些是仿出题人)现在将自己的理解写下来与大家分享 A这个题一分析就是每个数字都会与所有数字&一下 (a&a ...
- 牛客练习赛42 C 反着计算贡献
https://ac.nowcoder.com/acm/contest/393/C 题意 给你一个矩阵, 每次从每行挑选一个数,组成一个排列,排列的和为不重复数字之和,求所有排列的和(n,m<= ...
- 牛客练习赛60 E 旗鼓相当的对手
LINK:旗鼓相当的对手 考场上遇到这种简单的树形dp优化题目我真的不一定能写出来.. 虽然这道题思路很简单 设f[i][j]表示距i距离为j的点的个数 g[i][j]表示距i距离为j的点权和. 可以 ...
- 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A
牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...
- 最小生成树--牛客练习赛43-C
牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...
- [堆+贪心]牛客练习赛40-B
传送门:牛客练习赛40 题面: 小A手头有 n 份任务,他可以以任意顺序完成这些任务,只有完成当前的任务后,他才能做下一个任务 第 i 个任务需要花费 x_i 的时间,同时完成第 i 个任务的时间不 ...
- 牛客练习赛48 A· 小w的a+b问题 (贪心,构造,二进制)
牛客练习赛48 A· 小w的a+b问题 链接:https://ac.nowcoder.com/acm/contest/923/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C ...
- 牛客练习赛64 D【容斥+背包】
牛客练习赛64 D.宝石装箱 Description \(n\)颗宝石装进\(n\)个箱子使得每个箱子中都有一颗宝石.第\(i\)颗宝石不能装入第\(a_i\)个箱子.求合法的装箱方案对\(99824 ...
- 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D
目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...
随机推荐
- 聊聊Java
聊聊Java 笔记源于 视频教程Bilibili:狂神说Java 关注公众号:狂神说 能干嘛? 热度 TIOBE 狂神计划 三高:高可用.高性能.高并发 全球几千万的程序员都会Java,真正精通的不到 ...
- DirectX11 With Windows SDK--32 SSAO(屏幕空间环境光遮蔽)
前言 由于性能的限制,实时光照模型往往会忽略间接光因素(即场景中其他物体所反弹的光线).但在现实生活中,大部分光照其实是间接光.在第7章里面的光照方程里面引入了环境光项: \[C_a = \mathb ...
- NOIP 2016 D2T2 蚯蚓](思维)
NOIP 2016 D2T2 蚯蚓 题目大意 本题中,我们将用符号 \(\lfloor c \rfloor⌊c⌋\) 表示对 \(c\) 向下取整,例如:\(\lfloor 3.0 \rfloor = ...
- shell专题(四):Shell中的变量
4.1 系统变量 1. 常用系统变量 $HOME.$PWD.$SHELL.$USER等 2.案例实操 (1)查看系统变量的值 [atguigu@hadoop101 datas]$ echo $HOME ...
- java 面向对象(三十九):反射(三)了解ClassLoader
1.类的加载过程----了解 2.类的加载器的作用 3.类的加载器的分类 4.Java类编译.运行的执行的流程 5.使用Classloader加载src目录下的配置文件 @Test public vo ...
- python数据处理(七)之数据探索和分析
1.探索数据 1.1 安装agate库 1.2 导入数据 1.3 探索表函数 a.排序 b.最值,均值 c.清除缺失值 d.过滤 e.百分比 1.4 连结多个数据集 a.捕捉异常 b.去重 c.缺失数 ...
- java 数据结构(三):java常用类 三 日期时间API
JDK 8之前日期时间API 1.获取系统当前时间:System类中的currentTimeMillis()long time = System.currentTimeMillis();//返回当前时 ...
- Python之爬虫(十七) Scrapy框架中Spiders用法
Spider类定义了如何爬去某个网站,包括爬取的动作以及如何从网页内容中提取结构化的数据,总的来说spider就是定义爬取的动作以及分析某个网页 工作流程分析 以初始的URL初始化Request,并设 ...
- Nginx to start, restart, shutdown and upgrade
1.start cd usr/local/nginx/sbin ./nginx 2.restart kill -HUP PID #主进程号或进程号文件路径 #或者使用 cd /usr/local/ng ...
- CSS3 文字边框 -webkit-text-stroke 镂空的字体
CSS边框的一个不足就是只有矩形的元素才能使用. -webkit-text-stroke可以为文字添加边框.它不但可以设置文字边框的宽度,也能设置其颜色. 而且,配合使用color: transpar ...