整理的算法模板合集: ACM模板


目录

  • P5205 【模板】多项式开根

点我看多项式全家桶(●^◡_◡◡​^●)

P5205 【模板】多项式开根


#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N = 5000007;
const int p = 998244353, gg = 3, ig = 332738118;
const int mod = 998244353;
int limit = 1;
int L;
int R[N];
ll f[N], g[N], h[N];
ll A[N], B[N], C[N];template <typename T>void read(T &x)
{x = 0;register int f = 1;register char ch = getchar();while(ch < '0' || ch > '9') {if(ch == '-')f = -1;ch = getchar();}while(ch >= '0' && ch <= '9') {x = x * 10 + ch - '0';ch = getchar();}x *= f;
}ll qpow(ll a, ll b)
{ll res = 1;while(b) {if(b & 1) res = res * a % mod;a = a * a % mod;b >>= 1;}return res % p;
}ll inv(ll x) {return qpow(x, mod - 2);}
int inv2 = qpow(2, mod - 2);void NTT(ll *A, int type)
{for(int i = 0; i < limit; ++ i)if(i < R[i])swap(A[i], A[R[i]]);for(int mid = 1; mid < limit; mid <<= 1) {ll wn = qpow(gg, (mod - 1) / (2 * mid));if(type == -1) wn = qpow(wn, mod - 2);for(int len = mid << 1, pos = 0; pos < limit; pos += len) {ll w = 1;for(int k = 0; k < mid; ++ k, w = (w * wn) % mod){int x = A[pos + k] % mod;int y = w * A[pos + k + mid] % mod;A[pos + k] = (x + y) % mod;A[pos + k + mid] = (x - y + mod) % mod;}}}if(type == -1) {ll limit_inv = inv(limit);for(int i = 0; i < limit; ++ i) {A[i] = (A[i] * limit_inv) % mod;}}
}//多项式求逆
void get_inv(ll *A, ll *B, int deg)
{if(deg == 1) {B[0] = inv(A[0]);return ;}get_inv(A, B, (deg + 1) >> 1);for(limit = 1; limit <= (deg << 1); limit <<= 1);for(int i = 0; i < limit; ++ i) {R[i] = (R[i >> 1] >> 1) | ((i & 1) ? (limit >> 1) : 0);C[i] = (i < deg ? A[i] : 0);}NTT(C, 1), NTT(B, 1);for(int i = 0; i < limit; ++ i)B[i] = (2ll - C[i] * B[i] % mod + mod) % mod * B[i] % mod;NTT(B, -1);fill(B + deg, B + limit, 0);
}ll t[N];void poly_sqrt(ll *f, ll *h, int deg) {//polynomial 多项式if (deg == 1) {h[0] = 1;return;}poly_sqrt(f, h, deg + 1 >> 1);limit = 1;while (limit < deg << 1) {limit <<= 1;}fill(g, g + limit, 0);get_inv(h, g, deg);copy(f, f + deg, t);fill(t + deg, t + limit, 0);NTT(t, 1);NTT(g, 1);NTT(h, 1);for (int i = 0; i < limit; i++) {h[i] = 1LL * inv2 * (1LL * h[i] % mod + 1LL * g[i] * t[i] % mod) % mod;}NTT(h, -1);fill(h + deg, h + limit, 0);
}
int n, m;
ll a[N], b[N];//输入g输出f中间多项式h
//h是g的一半的平方根
int main()
{read(n);for(int i = 0; i < n; ++ i) read(a[i]);poly_sqrt(a, b, n);for(int i = 0; i < n; ++ i)printf("%lld ", b[i]);return 0;
}

【学习笔记】超简单的多项式开方相关推荐

  1. Unity学习笔记--超简单:两个游戏对象直接用线连接(UI和世界坐标下均可)

    目录 UI用 效果图 UI代码示例 挂载示例 世界坐标用 挂载示例 效果图 世界坐标代码示例 我们分两种情况,一种是UI上连线,一种是世界坐标下连线. UI用 效果图 UI代码示例 public cl ...

  2. python自训练神经网络_tensorflow学习笔记之简单的神经网络训练和测试

    本文实例为大家分享了用简单的神经网络来训练和测试的具体代码,供大家参考,具体内容如下 刚开始学习tf时,我们从简单的地方开始.卷积神经网络(CNN)是由简单的神经网络(NN)发展而来的,因此,我们的第 ...

  3. VC学习笔记:简单绘图

    VC学习笔记:简单绘图 SkySeraph Oct.29th 2009  HQU Email-zgzhaobo@gmail.com  QQ-452728574 Latest Modified Date ...

  4. STM32F429I-Discovery学习笔记--(1)简单上手和官方例程的下载与使用

    STM32F429I-Discovery学习笔记–(1)简单上手和官方例程的下载与使用 到手测试 收到开发板后我们要首先检查一下外观有没有磕碰破损,排针是否发生弯折,重要的是看一下JP3和CN4处的跳 ...

  5. Tensorflow2学习笔记:简单灰度图分类

    Tensorflow2学习笔记:简单灰度图分类 相关介绍 实验环境 实验步骤 导入相关库 导入数据集 浏览数据 预处理数据 构建模型 设置层 编译模型 训练模型 向模型馈送数据 评估准确率 进行预测 ...

  6. 【学习笔记】超简单的多项式除法(含完整证明)

    整理的算法模板合集: ACM模板 目录 多项式除法 P4512 [模板]多项式除法 tips 还没调出来的vector版本代码 点我看多项式全家桶(●^◡_◡◡​^●) 多项式除法 P4512 [模板 ...

  7. 【学习笔记】超简单的多项式反三角函数(含全套证明)

    整理的算法模板合集: ACM模板 目录 [模板]P5265 多项式反三角函数 点我看多项式全家桶(●^◡_◡◡​^●) [模板]P5265 多项式反三角函数 P5265 多项式反三角函数 前置函数多项 ...

  8. 【学习笔记】超简单的多项式三角函数(含全套证明)

    整理的算法模板合集: ACM模板 目录 P5264 多项式三角函数 点我看多项式全家桶(●^∀^●) P5264 多项式三角函数 如果模的是任意p的话可以枚举i,或者使用Cipolla算法. //#p ...

  9. Netty学习笔记(六) 简单的聊天室功能之WebSocket客户端开发实例

    在之前的Netty相关学习笔记中,学习了如何去实现聊天室的服务段,这里我们来实现聊天室的客户端,聊天室的客户端使用的是Html5和WebSocket实现,下面我们继续学习. 创建客户端 接着第五个笔记 ...

最新文章

  1. 8种常见机器学习算法比较
  2. IIS中 flv、swf 文件无法播放
  3. php无嵌套遍历多维数组,不递归怎么遍历多维数组(维数不定)
  4. python中字符串格式化符号含义
  5. 物联网全面崛起 LED企业大有可为
  6. 高并发架构系列:如何解决Redis雪崩、穿透、并发等5大难题
  7. hbase 集群(完全分布式)方式安装
  8. 嵌入式Linux内核,文件系统的制作
  9. 【故障处理】ORA-19809错误处理
  10. php zscan,PHP redis SCAN、SSCAN、ZSCAN、HSCAN 的使用, pipe 快速redis插入数据
  11. 计算机技术和教育,计算机技术和现代数学教育
  12. yeezy350灰橙_Yeezy 350V2 Grey Orange 侃爷椰子350 灰橙 特价
  13. python解非线性规划问题_Python+Gurobi+Pulp解决线性规划问题
  14. 单循环赛贝格尔编排法实现
  15. Python中: unsupported format character ''' (0x27)
  16. 【数据挖掘】利用md5查找重复文件
  17. 测试普通话水平的软件,求测试普通话标准的软件?6款普通话软件推荐
  18. Kubernetes 集群基于 Rook 搭建 Ceph 分布式存储系统
  19. 学科实践活动感悟50字_学科实践活动写实记录50字范文
  20. android studio报错Error:Project with path 'XXXX' could not be found解决办法

热门文章

  1. 基于 OpenCV 和 OpenPose 的棒球挥杆人体姿势估计
  2. 点云及三维图像处理综述
  3. 云计算集成过程中七个关键性的问题
  4. Laravel之Eloquent ORM访问器调整器及属性转换
  5. NS_ASSUME_NONNULL_BEGIN 延伸
  6. Unity3d连接SQL Server数据库出现SocketException: 使用了与请求的协议不兼容的地址错误...
  7. Java中Queue和BlockingQueue的区别
  8. eplise怎么连接数据库_如何通过eclipse连接到mysql数据库
  9. 【Python自学】六个上手超强的学习工具,你值得有
  10. 【Java常识】6.0面向对象认知和Eclipse的实用使用、==号和equals方法的区别