LOJ6268拆分数

时间:2023-01-02 17:24:37
/*

相当于每种物品都有无限个的背包

毕竟考场上写exp是个比较危险的行为

对数据进行根号分治是个比较好的方法

对于小于等于根号的部分暴力背包转移
对于大于根号的 最多只会拿根号个 dp一下就好了 */
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<queue>
#include<cmath>
#define ll long long
#define M 100010
#define mmp make_pair
using namespace std;
const int mod = 998244353, g = 3;
void add(int &a, int b) {
a += b;
a -= a >= mod ? mod : 0;
a += a < 0 ? mod : 0; } int poww(int a, int b) {
int tmp = a, ans = 1;
for(; b; b >>= 1, tmp = 1ll * tmp * tmp % mod) if(b & 1) ans = 1ll * ans * tmp % mod;
return ans;
} int read() {
int nm = 0, f = 1;
char c = getchar();
for(; !isdigit(c); c = getchar()) if(c == '-') f = -1;
for(; isdigit(c); c = getchar()) nm = nm * 10 + c - '0';
return nm * f;
}
int a[M * 4], b[M * 4], biao, f[350][M], n, pw[M * 4], iw[M * 4]; void fft(int *a, int n, int dft) {
for(int i = 0, j = 0; i < n; i++) {
if(i < j) swap(a[i], a[j]);
for(int l = n >> 1; (j ^= l) < l; l >>= 1);
}
for(int step = 1; step < n; step <<= 1) {
int wn = (dft == 1) ? pw[step] : iw[step];
for(int i = 0; i < n; i += step << 1) {
int wnk = 1;
for(int j = i; j < i + step; j++) {
int x = a[j], y = 1ll * wnk * a[j + step] % mod;
a[j] = (x + y) % mod;
a[j + step] = (x - y + mod) % mod;
wnk = 1ll * wnk * wn % mod;
}
}
}
if(dft == -1) {
int inv = poww(n, mod - 2);
for(int i = 0; i < n; i++) a[i] = 1ll * a[i] * inv % mod;
}
} int main() {
n = read();
a[0] = 1;
biao = sqrt(n) + 1;
for(int i = 1; i < biao; i++) {
for(int j = i; j <= n; j++) {
add(a[j], a[j - i]);
}
}
f[1][biao] = 1;
for(int i = 1; i <= biao; i++) {
for(int j = 0; j <= n; j++) {
if(f[i][j]) {
if(j + i <= n) add(f[i][j + i], f[i][j]);
if(j + biao <= n) add(f[i + 1][j + biao], f[i][j]);
}
add(b[j], f[i][j]);
}
}
add(b[0], 1);
for(int i = 1; i < 4 * M; i <<= 1) pw[i] = poww(g, (mod - 1) / 2 / i), iw[i] = poww(pw[i], mod - 2);
n++;
int up = (n << 1) - 1;
while(up - (up & -up)) up += (up & -up);
fft(a, up, 1), fft(b, up, 1);
for(int i = 0; i < up; i++) a[i] = 1ll * a[i] * b[i] % mod;
fft(a, up, -1);
for(int i = 1; i < n; i++) cout << a[i] << '\n';
return 0;
}

LOJ6268拆分数的更多相关文章

  1. HDU 4651 数论 partition 求自然数的拆分数

    别人的解题报告: http://blog.csdn.net/zstu_zlj/article/details/9796087 我的代码: #include <cstdio> #define ...

  2. SQL Server需要监控哪些计数器

    常规计数器 收集操作系统服务器的服务器性能信息,包括Processor.磁盘.网络.内存 Processor 处理器 1.1 % Processor Time指处理器用来执行非闲置线程时间的百分比.通 ...

  3. 清北学堂2017NOIP冬令营入学测试P4749 C’s problem&lpar;c&rpar;

    P4746 C's problem(c) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描述 小C是一名数学家,由于它自制力比较差 ...

  4. 清北学堂2017NOIP冬令营入学测试

    P4744 A's problem(a) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题,每三天结算一次成绩.参与享优惠 描述 这是一道有背 ...

  5. sql server 性能计数器

    常规计数器 收集操作系统服务器的服务器性能信息,包括Processor.磁盘.网络.内存 Processor 处理器 1.1 % Processor Time指处理器用来执行非闲置线程时间的百分比.通 ...

  6. NYOJ-571 整数划分&lpar;三&rpar;

    此题是个非常经典的题目,这个题目包含了整数划分(一)和整数划分(二)的所有情形,而且还增加了其它的情形,主要是用递归或者说是递推式来解,只要找到了递推式剩下的任务就是找边界条件了,我觉得边界也是非常重 ...

  7. hdu1028:整数拆分

    求整数的拆分数.. 一种解法是母函数 #include <iostream> #include <stdio.h> #include<string.h> #incl ...

  8. HDU1028Ignatius and the Princess III母函数入门

    这个题也能够用递归加记忆化搜索来A,只是因为这题比較简单,所以用来做母函数的入门题比較合适 以展开后的x4为例,其系数为4,即4拆分成1.2.3之和的拆分数为4: 即 :4=1+1+1+1=1+1+2 ...

  9. SQL Server 2008 R2 性能计数器详细列表(一)

    原文:SQL Server 2008 R2 性能计数器详细列表(一) SQL Server Backup Device 计数器: 可监视用于备份和还原操作的 Microsoft SQL Server ...

随机推荐

  1. Redis实现简单的消息队列

    1.问:什么是消息队列?  答:是一个消息的链表,是一个异步处理的数据处理引擎. 2.问:有什么好处? 答:不仅能够提高系统的负荷,还能够改善因网络阻塞导致的数据缺失. 3.问:用途有哪些? 答:邮件 ...

  2. SEO 百度后台主动推送链接

    实践步骤,先用爬虫程序将本网站的所有连接爬取出来,再用python文件处理程序把爬虫来的东东整理成一行一个链接的文本格式.再用postman接口测试工具,使用post方式,将所有的链接post过去,这 ...

  3. C&num;程序入门学习

    前言: C# (C sharp) 是微软对这一问题的解决方案.C#是一种最新的.面向对象的编程语言.它使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序,Microsoft . ...

  4. GC垃圾回收算法

    什么是GC垃圾回收呢.日常生活中我们去餐厅吃饭吃完饭,吃完饭走了餐具不用管,服务员在把餐具拿走,这是一种方式,服务员怎么知道他要来把餐具拿走呢,因为你走了,这个位置空了.服务员什么时候拿走餐具很重要, ...

  5. python安装pip的步骤记录

    因为重新装了系统,所以python所有的环境都要重新走一遍. 首先去python官网下载python最新版本.如果python没有自动加入环境变量的话就需要你自己手动加入.这个一般在安装python的 ...

  6. Linux----------Openssh介绍以及用法

    一.OpenSSH介绍 OpenSSH这一术语指系统中使用的Secure Shell软件的软件实施.用于在远程系统上安全运行shell.如果您在可提供ssh服务的远程Linux系统中拥有用户帐户,则s ...

  7. 第88节:Java中的Ajax和ASP&period;NET和TCP&sol;IP 教程和JSON

    第88节:Java中的Ajax和Jquery ajax是什么?有什么用?原理,怎么用? ajax是asynchronous javascript and xml(异步javascript和xml),是 ...

  8. ParseUrl

    #!/usr/bin/python # coding:utf-8 import re import urlparse # 解析url def ParseUrl(url): if not re.sear ...

  9. 前端必备:FastStoneCapture 和 Licecap &amp&semi;&amp&semi;&amp&semi; mingw c&plus;&plus; 编译执行

    端必备:FastStoneCapture 和 Licecap FastStoneCapture这个软件非常小,只有2M多,并且其功能很强大,包括截图,录制视频,量尺,取色等等,对于前端工程师绝对是必备 ...

  10. NOIP2018前的一些计划&amp&semi;记录&lpar;日更&rpar;

    先空着,等停课了再开始写. 诸位好,我是yyb.现在显然已经不再是高一的小蒟蒻了,已经升级为了高二的菜鸡了 现在已经不能再每天划划水切切题了,毕竟......已经高二了,所有的机会从高一的两倍全部除了 ...