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

题解:CF1010C Border

形式化一下题意,就是求使得下式成立的 rrr 的个数。

a1x1+a2x2+⋯+anxn=pk+r(xi,p,r≥0) a_1x_1 + a_2x_2 + \cdots + a_nx_n = pk + r (x_i,p,r \ge 0) a1x1+a2x2++anxn=pk+r(xi,p,r0)

rrr 看成定值,由裴蜀定理可知上式有解当且仅当

gcd⁡(a1,a2,⋯ ,an)∣pk+r \gcd(a_1,a_2,\cdots,a_n) \mid pk + r gcd(a1,a2,,an)pk+r

g=gcd⁡(a1,a2,⋯ ,an)g = \gcd(a_1,a_2,\cdots,a_n)g=gcd(a1,a2,,an),则可以改写成

tg=pk+r tg = pk + r tg=pk+r

其中 g,k,rg,k,rg,k,r 为定值,因此移项可得

gt−kp=r gt - kp = r gtkp=r

容易发现这就是 ax+by=cax + by = cax+by=c 的变式,有解当且仅当

gcd⁡(g,−k)∣r \gcd (g,-k) \mid r gcd(g,k)r

因此答案为 {gcd⁡(g,−k)×0,gcd⁡(g,−k)×1,⋯ ,gcd⁡(g,−k)×(m−1)}\{\gcd(g,-k) \times 0,\gcd(g,-k) \times 1,\cdots,\gcd(g,-k) \times (m - 1)\}{gcd(g,k)×0,gcd(g,k)×1,,gcd(g,k)×(m1)},其中 m=⌊kgcd⁡(g,−k)⌋m = \lfloor\dfrac{k}{\gcd(g,-k)}\rfloorm=gcd(g,k)k。注意此处的 gcd⁡\gcdgcd 均为正数,可以在计算时直接去掉负号。

void solve ()
{int n = read (),k = read (),g = 0;vector <int> a (n + 1);for (int i = 1;i <= n;++i) a[i] = read (),g = __gcd (a[i],g);int tot = k / __gcd (g,k);printf ("%d\n",tot);for (int i = 0;i < tot;++i) printf ("%d ",i * __gcd (g,k));puts ("");
}
http://www.dtcms.com/a/301722.html

相关文章:

  • Python异常处理:金融风控系统中的救命盾牌
  • Web开发系列-第13章 Vue3 + ElementPlus
  • 第十二讲:C++继承
  • 每日算法刷题Day55:7.27:leetcode 复习完第K小/大+栈4道题,用时1h50min
  • Datawhale 科大讯飞AI大赛(模型蒸馏)
  • 个人笔记HTML5
  • 聊聊回归测试的应对策略
  • selenium完整版一览
  • Spring Boot音乐服务器项目-删除音乐模块
  • Telerik 2025 Q2 Crack,Telerik Report Serve完整的解决方案
  • 腾讯云AI代码助手CodeBuddy开发指导
  • java小白闯关记第一天(两个数相加)
  • 第七章 状态管理
  • (LeetCode 每日一题) 2210. 统计数组中峰和谷的数量 (数组)
  • 通过阿里云服务器使用NPS实现外网访问本机服务
  • vulkan从小白到专家——YUV处理
  • 动态规划 (Dynamic Programming) 算法概念-JS示例
  • Qt写游戏脚本/辅助(仅供参考)
  • @RefreshScope 核心原理深度解析:Spring Boot 的动态魔法
  • C++:模拟实现shared_ptr
  • day69—动态规划—爬楼梯(LeetCode-70)
  • LeetCode 刷题【16. 最接近的三数之和、17. 电话号码的字母组合】
  • 黑马程序员C++核心编程笔记--类和对象--运算符重载
  • 机器学习—线性回归
  • 深入解析MySQL索引页结构与B+Tree实现原理
  • ubuntu18.04解压大的tar.gz文件失败
  • 【Java系统接口幂等性解决实操】
  • java--WebSocket简单介绍
  • 2.安装CUDA详细步骤(含安装截图)
  • Dataloader的使用