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

20260506 紫题训练

P4598 [HEOI2012] Akai 的数学作业

设一个解为 \(x=\dfrac{p}{q}\),满足 \(p,q\) 互质。由定义有 \(\displaystyle\sum_{i=0}^n a_i(\dfrac{p}{q})^i=0\)

仿照这道题的做法,可以将这个条件放在模意义下判断。

但所有可能的解有很多,考虑分析条件的限制减少枚举量。

通分得到 \(\displaystyle\sum_{i=0}^n a_ip^iq^{n-i}=0\),肯定也有 \(\displaystyle\sum_{i=0}^n a_ip^iq^{n-i}\equiv 0\pmod p\)

由于 \(\displaystyle\sum_{i=1}^n a_ip^iq^{n-i}\equiv 0\pmod p\),那么一定有 \(a_0q^n\equiv 0\pmod p\)。再由 \(p,q\) 互质可得 \(p\mid a_i\),也就是说分子 \(p\) 只需枚举 \(a_0\) 的因数。

同理可得 \(q\mid a_n\)\(q\) 只需枚举 \(a_n\) 的因数。

但还存在一个小问题:存在 \(a_0=0\) 的情况。

此时必定存在根 \(x=0\),其余情况可以给原方程整体除掉 \(x\)\(a_1\) 变成新方程的 \(a_0\)

如果 \(a_1=0\) 的话那么可以继续使用上面的方式,由于保证 \(a_n\ne 0\) 必定存在一个非 \(0\) 数。

时间复杂度为 \(\mathcal O(n\max_{i=1}^V d(i)^2)\),其中 \(d(x)\)\(x\) 的因数个数。

在实现上要注意考虑负数的情况。

#include<bits/stdc++.h>
#define N 105
using namespace std;
vector<int>dp,dq;
int n,a[N],P[N],Q[N];
const int M=998244353;
struct frac{int p,q;bool operator<(const frac &x){return 1ll*p*x.q<1ll*x.p*q;}
};vector<frac>ans;
vector<int>divs(int x){vector<int>d;x=abs(x);for(int i=1;i*i<=x;i++)if(!(x%i)){if(i*i^x)d.emplace_back(x/i),d.emplace_back(-x/i);d.emplace_back(i);d.emplace_back(-i);}return d;
}
int main(){scanf("%d",&n),P[0]=Q[0]=1;for(int i=0;i<=n;i++) scanf("%d",a+i);dq=divs(a[n]);for(int i=0;i<=n;i++) if(a[i]){dp=divs(a[i]);break;}dp.emplace_back(0);for(auto p:dp) for(auto q:dq)if(abs(__gcd(p,q))==1&&q>0){int res=0;for(int i=1;i<=n;i++)P[i]=1ll*P[i-1]*p%M,Q[i]=1ll*Q[i-1]*q%M;for(int i=0;i<=n;i++)res=(res+1ll*a[i]*P[i]%M*Q[n-i])%M;if(!res) ans.push_back({p,q});}printf("%zu\n",ans.size());sort(ans.begin(),ans.end());for(auto x:ans)if(x.q==1) printf("%d\n",x.p);else printf("%d/%d\n",x.p,x.q);return 0;
}
http://www.jsqmd.com/news/766272/

相关文章:

  • 做无货源最怕风控?这款电子面单转换工具,把安全和方便都给你
  • 低代码表单设计——OpenClaw智能助手的可视化表单创建与管理(2026技术版)
  • 如何用 cursor.continue 实现本地海量数据的分页查询加载
  • 【实战部署】Windows Server 2016搭建IIS+DNS+OA办公系统全流程
  • 信安学习第十三期
  • FPGA开发避坑指南:Vivado里那些让你头疼的Latch是怎么冒出来的?
  • 即梦如何导出不带水印的原图?即梦去水印设置全攻略,2026 实测有效方法 - 科技热点发布
  • CSCN星网APP打造数字经济时代新型价值基础设施 - 速递信息
  • Autosar MCAL开发避坑指南:S32K14x的MCU模块配置,这些复位源和低功耗模式细节千万别忽略
  • LoadBalancer- Haproxy 基础部署:四层 TCP 转发配置与参数优化
  • 乌鲁木齐本地专业防水TOP5靠谱推荐:家里漏水不用愁,免费上门不求人。本地最新防水企业资讯:专业师傅持证上门,收费透明无隐藏收费,质保5-10年,售后有保障 - 企业资讯
  • VSCode远程开发卡顿终结指南:2026新版SSH+Dev Container响应速度提升3.8倍实录
  • Numpy 1 - ace-
  • AI多智能体系统实现3D虚拟城市自动生成
  • FPGA新手必看:手把手教你用Verilog实现UDP数据包封装(附完整代码结构)
  • 全球化运营新挑战:数据治理如何破局
  • 对比不同大模型通过Taotoken生成视频脚本的风格与token效率差异
  • 校招C++20并发系列07-保障线程公平性:Ticket Spinlock手写与吞吐权衡
  • 即梦去除水印教程:即梦怎么去掉水印?2026 实测方法全整理 - 科技热点发布
  • 魔兽争霸III终极优化指南:WarcraftHelper让经典游戏在现代电脑上重生
  • VSCode 2026金融安全配置:7个必须禁用的默认设置,否则触发监管穿透式审计告警
  • 黑群晖7.x ame半洗白加激活补丁
  • 瞬态热阻(Zth)与稳态热阻(Rth)详解 + C# 算法区别
  • 告别PS!用HandyView做图像对比实验,效率提升不止一点点(附Windows/Mac安装包)
  • 用户如何挑选靠谱的国内专业厌氧培养箱生产商?2026年实测方案 - 速递信息
  • FunASR热词功能实测:如何用Paraformer模型提升会议记录中专业术语的识别准确率?
  • 即梦去水印免费方法有哪些?即梦如何免费去掉水印?2026实测可用方案汇总 - 科技热点发布
  • 新手避坑指南:用STM32F4做FOC电机驱动,PCB布局这8个细节千万别忽略
  • gte-base-zh建材行业:混凝土配比描述→强度/耐久性数据语义关联
  • 从Twitter到YouTube:我是如何用《System Design Interview》里的框架,通过国内大厂系统设计轮的