牛客练习赛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 ...
随机推荐
- 区间dp(低价回文)
[题目大意] 追踪每头奶牛的去向是一件棘手的任务,为此农夫约翰安装了一套自动系统.他在每头牛身上安装了一个电子身份标签,当奶牛通过扫描器的时候,系统可以读取奶牛的身份信息.目前,每个身份都是由一个字符 ...
- 创建虚拟机和安装centos7 & install oracle
win7 x64位+VMware12+centos7 x64位+oracle 11g R2安装详解(一) 一.虚拟机安装oracle11g R2的安装环境: 1.win7 x64位 ...
- Layui文本框限制正整数
<input type="text" name="Number" lay-verify="required|integer" plac ...
- LNMP架构应用案例----WordPress
一.环境部署 mysql 172.16.1.10 数据库 web01 10.0.0.11 172.1 ...
- Java面向对象详解-下
一. static static:静态的,可以用来修饰属性.方法.代码块(或初始化块).内部类 static修饰属性(类变量): 由类创建的所有的对象,都共用这一个属性 当其中一个对象对此属性进行修改 ...
- python 爬虫写入txt:UnicodeEncodeError: ‘gbk’ codec can’t encode character 错误的解决办法
原链接:https://blog.csdn.net/vito21/article/details/53490435 今天爬一个网站的内容,在写入TXT文件时,某些页面总是报UnicodeEncodeE ...
- python面向对象07/异常处理
python面向对象07/异常处理 目录 python面向对象07/异常处理 1. 异常错误分类 2. 什么是异常? 3. 异常处理 4. 为什么要有异常处理 5. 异常处理的两种方式 1.if判断 ...
- 008.Nginx静态资源
一 Nginx静态资源概述 1.1 静态资源类型 Nginx作为静态资源Web服务器部署配置, 传输非常高效, 常常用于静态资源处理,请求以及动静分离.通常非服务器动态运行生成的文件属于静态资源. 类 ...
- linux 安装superset
背景说明 公司数据分析人员需要将日常监控分析数据进行可视化,在踩了一些坑之后,终于在业务环境中搭建成功superset,后续复现两次流程也是成功的,分享一波... 业务环境说明 操作系统:centos ...
- python3利用cryptography 进行加密和解密
我们的日常工作中,一定会遇到需要加密的数据,比如:密码.私密信息... ... 我们不仅要对他们进行加密,更需要对他们进行解密,因为毕竟我们的用户应该不会看得懂加密过后的字符串吧!!! 在python ...