当前位置: 首页 > article >正文

Codeforces Round 592 (Div. 2) C题 The Football Season(Exgcd)

题目链接

https://codeforces.com/problemset/problem/1244/C

思路

其实就是要求 a x + b y = c ax+by=c ax+by=c的一组 x + y x+y x+y的最小整数解。因为题目保证了 a > b a>b a>b,所以只需要使得 y y y最小即可。

我们对 a x + b y = c ax+by=c ax+by=c推导得到: y = − a b x + c b y = -\frac{a}{b}x + \frac{c}{b} y=bax+bc,如下图所示:

在这里插入图片描述
该图展示了为什么 y y y要取最小非负整数。

因此本题使用扩展欧几里得即可。

注意:本题会爆 l o n g l o n g longlong longlong,所以我直接用了 p y t h o n python python

代码

def exgcd(a,b):
    if b == 0:
        return a,1,0
    x1 = 0
    y1 = 0
    gcd = 0
    gcd,x1,y1 = exgcd(b,a % b)
    return gcd, y1, x1 - a // b * y1


n, p, w, d = map(int, input().split())

opgcd,x,y = exgcd(w, d)

if p % opgcd != 0:
    print(-1)
    exit(0)

p //= opgcd
w //= opgcd
d //= opgcd
x *= p
y *= p
miny = (y % w + w) % w
tx = x - (miny - y) // w * d

if tx >= 0 and miny >= 0 and tx + miny <= n:
    print(f"{tx} {miny} {n - tx - miny}")
else:
    print(-1)

http://www.kler.cn/a/321265.html

相关文章:

  • HarmonyOS Next 组件或页面之间的所有通信(传参)方法总结
  • 深度学习的多主机多GPU协同训练
  • Flink Job更新和恢复
  • AI风向标|算力与通信的完美融合,SRM6690解锁端侧AI的智能密码
  • java 随机生成验证码
  • ubuntu22.04 安装FFmpeg,并进行视频的转化格式和裁剪
  • AI大模型横评-9月Update(O1,Grok2,Qwen,Step-2)
  • 计算机毕业设计 基于Python的医疗预约与诊断系统 Django+Vue 前后端分离 附源码 讲解 文档
  • 编译 FFmpeg 以支持 AV1 编解码器以及其他硬件加速选项(如 NVENC、VAAPI 等)
  • 谷歌深度学习研究揭示OpenAI O1模型优化策略:比规模更重要的计算效率
  • Java中的锁总结
  • Qt信号说明
  • 【Linux】项目自动化构建工具-make/Makefile 详解
  • Linux系统之部署web-resume静态个人简历网页
  • 时序,这很Transformer!颠覆传统,实现了性能的全面超越!
  • Vue3+Element-UI Plus登录静态页
  • vite ts vue中配置@路径别名报错标红
  • 机械设备产品资料方案介绍小程序系统开发制作
  • 【数据结构】排序算法---桶排序
  • SVM原理
  • docker-compose.yml entrypoint 和command 关系
  • 利用 Flink CDC 实现实时数据同步与分析
  • 使用vite+react+ts+Ant Design开发后台管理项目(一)
  • 以数赋能实景三维创新“科技+文旅”
  • 数据结构-3.1.栈的基本概念
  • Redis常用命令笔记