首页 > 其他分享 >多项式相关

多项式相关

时间:2024-01-17 21:01:22浏览次数:26  
标签:eres int 多项式 void ++ res 相关 mod

板子:

  1 const int N = 4e5 + 5;
  2 
  3 struct NTT {
  4     const int mod = 998244353, G = 3, invG = 332748118;
  5     int rev[N], res[N], Inv[N], Res[N], eres[N], Eres[N];
  6 
  7     void preinv(int n) {
  8         Inv[0] = Inv[1] = 1;
  9         for (int i = 2; i <= n; i++) {
 10             Inv[i] = 1ll * (mod - mod / i) * Inv[mod % i] % mod;
 11         }
 12     }
 13 
 14     NTT() {
 15         preinv(2e5);
 16     }
 17 
 18     int qpow(int x, int y) {
 19         int a = 1;
 20 
 21         while (y) {
 22             if (y & 1) a = 1ll * a * x % mod;
 23             x = 1ll * x * x % mod;
 24             y /= 2;
 25         }
 26 
 27         return a;
 28     }
 29 
 30     void init(int n) {
 31         rev[0] = 0;
 32 
 33         for (int i = 1; i < n; i++) {
 34             rev[i] = (rev[i >> 1] >> 1) | ((i & 1) ? (n >> 1) : 0);
 35         }
 36     }
 37 
 38     void DFT(int f[], int n, int flag) {
 39         for (int i = 0; i < n; i++) {
 40             if (i < rev[i]) swap(f[i], f[rev[i]]);
 41         }
 42 
 43         for (int len = 2; len <= n; len <<= 1) {
 44             int Len = len >> 1;
 45             int g = qpow((flag ? invG : G), (mod - 1) / len);
 46 
 47             for (int l = 0; l < n; l += len) {
 48                 int now = 1;
 49                 for (int i = l; i < l + Len; i++) {
 50                     int lst = 1ll * f[i + Len] * now % mod;
 51                     f[i + Len] = (f[i] + mod - lst) % mod;
 52                     f[i] = (f[i] + lst) % mod;
 53                     now = 1ll * now * g % mod;
 54                 }
 55             }
 56         }
 57 
 58         if (!flag) return;
 59 
 60         int inv = qpow(n, mod - 2);
 61 
 62         for (int i = 0; i < n; i++) {
 63             f[i] = 1ll * f[i] * inv % mod;
 64         }
 65     }
 66 
 67     void Mul(int f[], int g[], int n, int flag = 0) {
 68         init(n);
 69         DFT(f, n, 0);
 70         DFT(g, n, 0);
 71         for (int i = 0; i < n; i++) {
 72             f[i] = 1ll * f[i] * g[i] % mod;
 73         }
 74         DFT(f, n, 1);
 75         if (flag) DFT(g, n, 1);
 76     }
 77 
 78     void getinv(int f[], int g[], int n) {
 79         if (n == 1) {
 80             g[0] = qpow(f[0], mod - 2);
 81             return;
 82         }
 83 
 84         getinv(f, g, n / 2);
 85 
 86         for (int i = 0; i < n; i++) res[i] = f[i];
 87         for (int i = n; i < 2 * n; i++) res[i] = 0;
 88 
 89         init(2 * n);
 90         DFT(g, 2 * n, 0);
 91         DFT(res, 2 * n, 0);
 92 
 93         for (int i = 0; i < 2 * n; i++) {
 94             g[i] = 1ll * (2 + mod - 1ll * res[i] * g[i] % mod) % mod * g[i] % mod;
 95         }
 96 
 97         DFT(g, 2 * n, 1);
 98 
 99         for (int i = n; i < 2 * n; i++) g[i] = 0;
100     }
101 
102     void Deriv(int f[], int n) {
103         for (int i = 0; i < n - 1; i++) {
104             f[i] = 1ll * f[i + 1] * (i + 1) % mod;
105         }
106         f[n - 1] = 0;
107     }
108 
109     void Integral(int f[], int n) {
110         for (int i = n - 1; i > 0; i--) {
111             f[i] = 1ll * f[i - 1] * Inv[i] % mod;
112         }
113         f[0] = 0;
114     }
115 
116     void Ln(int f[], int g[], int n) {
117         for (int i = 0; i < 2 * n; i++) Res[i] = 0;
118         getinv(f, Res, n);
119         for (int i = 0; i < n; i++) res[i] = f[i];
120         for (int i = n; i < 2 * n; i++) res[i] = 0;
121         Deriv(res, n);
122         Mul(res, Res, 2 * n);
123         Integral(res, n);
124         for (int i = 0; i < n; i++) g[i] = res[i];
125     }
126 
127     void exp(int f[], int g[], int n) {
128         if (n == 1) {
129             g[0] = 1;
130             return;
131         }
132 
133         exp(f, g, n / 2);
134         for (int i = 0; i < n; i++) eres[i] = 0;
135         Ln(g, eres, n);
136         for (int i = 0; i < n; i++) {
137             eres[i] += mod - f[i];
138             if (eres[i] >= mod) eres[i] -= mod;
139         }
140         Mul(eres, g, n * 2, 1);
141         for (int i = n; i < 2 * n; i++) eres[i] = 0;
142         for (int i = 0; i < n; i++) {
143             g[i] += mod - eres[i];
144             if (g[i] >= mod) g[i] -= mod;
145         }
146         for (int i = n; i <= 2 * n; i++) g[i] = 0;
147     }
148 };
View Code

 

标签:eres,int,多项式,void,++,res,相关,mod
From: https://www.cnblogs.com/ORzyzRO/p/17971157

相关文章

  • 多项式计数杂谈
    多项式计数杂谈-command_block的博客-洛谷博客command_block的博客导航切换首页文章command_block的博客多项式计数杂谈postedon2020-02-1118:16:01|under算法|Ox00.前面的话&前置芝士本文Markd......
  • Java 秘钥对相关操作
    生成JKS(JavaKeyStore)文件keytool-genkeypair-keystoremercury.jks-keyalgRSA-validity180-aliasmercury参数说明keytool:这是JavaKeytool工具,用于管理密钥和证书。-genkeypair:指示Keytool生成一个密钥对(公钥和私钥)。-aliasmercury:设置密钥对的别......
  • 多项式求值软件下载Polynomial evaluation software mus 2025 download
    本软件是Windows下64位软件。本软件能计算如a0+a1*x+a2*x^2+......+an*x^n的式子的对b1的求值结果。具体的方法就是在多多项式系数区输入a0到an的值,然后点击计算多项式的结果即可在结果栏算出结果。最大项数为1000项。多项式系数输入时1项1行,从上到下是a0到an,中间不能空行。T......
  • 常见的自动化测试相关框架
    Appium:一个开源、跨平台的自动化测试工具,用于测试原生和轻量移动应用,支持iOS、Android和FirefoxOS平台。Carina:一款Java自动测试框架,实现很完善、功能齐全,但文档较少,对于测试人员学习难度有要求。Galen:一个开放源码的测试网页布局和响应设计的开源工具。Gauge:一种相对较新的测试自......
  • Kubernetes之云原生相关
    什么是云原生可以简单看做就是K8S。将项目全部都通过K8S部署。实际上,云原生是一条最佳路径或者最佳实践。更详细的说,云原生为用户指定了一条低心智负担的、敏捷的、能够以可扩展、可复制的方式最大化地利用云的能力、发挥云的价值的最佳路径。因此,云原生其实是一套指导进行软件......
  • 最优订单执行算法相关Paper介绍
    更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流。随着量化交易、高频交易的竞争日益激烈,事实证明,交易执行显着影响量化策略的投资绩效。因此,许多从业者开始将交易执行视为一项独立的任务。本期文章分享,我们搜寻了一些用于最小化交易成本的最佳......
  • 【python网络编程相关】 ----操作系统相关了解
    title:【python网络编程相关】----操作系统相关了解date:2024-01-1615:54:06updated:2024-01-1616:20:00description:【python网络编程相关】----操作系统相关了解cover: https://www.cnblogs.com/YZL2333/p/10444200.htmlhttps://home.cnblogs.com/u/......
  • 中州韻輸入法引擎(小狼毫) 相关配置
    小狼毫是一个开源的汉字输入法,支持Windows,Linux,Mac。适合一些喜欢研究折腾的人。官网地址:https://rime.im/官网的帮助文档:https://rime.im/docs/其实很多内容在官网上都有具体的设置教程。可以自己去研究,我再此记录一些我在使用过程中的一些问题,和一些基本的配置。1.软件安装......
  • 切比雪夫多项式
    切比雪夫多项式通常我们使用切比雪夫多项式时都在范围[-1,1]之间。定义切比雪夫多项式在[-1,1]上的定义是:\(T_n(x)=cos(narccos(x)),-1\leqx\leq1\),其中,T_n(x)是阶数为n的切比雪夫多项式。性质\(T_n(x)\)是n阶多项式。\(T_n(x)\)的奇偶性和n的奇偶性一致。\(T_n(x)\)在区......
  • 最高法--结算协议中含有非工程款性质但与最终清算值密切相关的项目的,除另有相关证据表
    (2021)最高法民申7402号  天津北方华泰置业投资有限公司、中冶天工集团有限公司等建设工程施工合同纠纷民事申请再审审查民事裁定书申请人主张:华泰公司申请再审称,(一)原判决认定的基本事实缺乏证据证明。尽管华泰公司与中冶公司已经对审计机构出具的审计金额152655857.00元予以确......