2019.01.26 codeforces 1096G. Lucky Tickets(生成函数)

传送门
题意简述:现在有一些号码由000~999中的某些数字组成(会给出),号码总长度为nnn,问有多少个号码满足前n2\frac n22n个数码的和等于后n2\frac n22n个数码的和(保证nnn是偶数),答案对998244353998244353998244353取模。


思路:
一道挺显然的生成函数+快速幂。
考虑到前n2\frac n22n个数码和的生成函数和后n2\frac n22n个数码和的生成函数是相同的,因此直接求出前n2\frac n22n个数码和的生成函数,然后对于每一项的系数平方加起来即可。
代码:

#include<bits/stdc++.h>
#define ri register int
using namespace std;
const int mod=998244353,N=2e5+5;
typedef long long ll;
int n,k,tim,lim;
vector<int>A,B,pos;
inline void init(const int&up){lim=1,tim=0;while(lim<=up)lim<<=1,++tim;pos.resize(lim),A.resize(lim),B.resize(lim);for(ri i=0;i<lim;++i)pos[i]=(pos[i>>1]>>1)|((i&1)<<(tim-1));
}
inline int add(int a,int b){return a+b>=mod?a+b-mod:a+b;}
inline int dec(int a,int b){return a>=b?a-b:a-b+mod;}
inline int mul(int a,int b){return (ll)a*b%mod;}
inline int ksm(int a,int p){int ret=1;for(;p;p>>=1,a=mul(a,a))if(p&1)ret=mul(ret,a);return ret;}
inline void ntt(vector<int>&a,const int&type){for(ri i=0;i<lim;++i)if(i<pos[i])swap(a[i],a[pos[i]]);for(ri w,wn,typ=type==1?3:(mod+1)/3,mult=(mod-1)/2,mid=1;mid<lim;mid<<=1,mult>>=1){wn=ksm(typ,mult);for(ri j=0,len=mid<<1;j<lim;j+=len)for(ri w=1,a0,a1,k=0;k<mid;++k,w=mul(w,wn)){a0=a[j+k],a1=mul(w,a[j+k+mid]);a[j+k]=add(a0,a1),a[j+k+mid]=dec(a0,a1);}}if(type==-1)for(ri i=0,inv=ksm(lim,mod-2);i<lim;++i)a[i]=mul(a[i],inv);
}
struct poly{vector<int>a;poly(int k=0,int x=0){a.resize(k+1),a[k]=x;}inline int&operator[](const int&k){return a[k];}inline const int&operator[](const int&k)const{return a[k];}inline int deg()const{return a.size()-1;}inline poly extend(int k){poly ret=*this;return ret.a.resize(k+1),ret;}friend inline poly operator^(const poly&a,const int&k){init(a.deg()*k);for(ri i=0;i<=a.deg();++i)A[i]=B[i]=a[i];for(ri i=a.deg()+1;i<lim;++i)A[i]=B[i]=0;int p=k-1;ntt(A,1),ntt(B,1);while(p){if(p&1)for(ri i=0;i<lim;++i)B[i]=mul(B[i],A[i]);for(ri i=0;i<lim;++i)A[i]=mul(A[i],A[i]);p>>=1;}poly ret;return ntt(B,-1),ret.a=B,ret.extend(a.deg()*k);}
};
int main(){poly a(9);int mx=0;scanf("%d%d",&n,&k),n>>=1;for(ri i=1,v;i<=k;++i)scanf("%d",&v),a[v]=1,mx=max(mx,v);a=a.extend(mx);a=(a^n);int ans=0;for(ri i=0;i<=mx*n;++i)ans=add(ans,mul(a[i],a[i]));cout<<ans;return 0;
}

转载于:https://www.cnblogs.com/ldxcaicai/p/10367716.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

看完这篇文章保你面试稳操胜券——小程序篇

✨ 进大厂收藏这一系列就够了,全方位搜集总结,为大家归纳出这篇面试宝典,面试途中祝你一臂之力!,共分为四个系列 ✨ 本 篇 为 《 看 完 这 篇 文 章 保 你 面 试 稳 操 胜 券 》 第 四 篇 ( 微

17 | 如何正确地显示随机消息?

我在上一篇文章&#xff0c;为你讲解完order by语句的几种执行模式后&#xff0c;就想到了之前一个做英语学习App的朋友碰到过的一个性能问题。今天这篇文章&#xff0c;我就从这个性能问题说起&#xff0c;和你说说MySQL中的另外一种排序需求&#xff0c;希望能够加深你对MySQ…

看完这篇文章保你面试稳操胜券——React篇

✨ 进大厂收藏这一系列就够了,全方位搜集总结,为大家归纳出这篇面试宝典,面试途中祝你一臂之力!,共分为四个系列 ✨ 本 篇 为 《 看 完 这 篇 文 章 保 你 面 试 稳 操 胜 券 》 第 五 篇 ( r

HTML的footer置于页面最底部

vue项目中&#xff0c;使用element-ui的布局&#xff0c;仍然出现footer不固定页面底部的情况&#xff0c;网上找到的一个管用的 方法是&#xff1a;footer高度固定绝对定位 <html><head></head><body><div class"header">header</…

logstash异常

logstash异常 123Unrecognized VM option UseParNewGCError: Could not create the Java Virtual Machine.Error: A fatal exception has occurred. Program will exit.logstash的版本6.4.1&#xff0c;修改config/jvm.options&#xff0c;注释掉-XX:UseParNewGC这个配置即可。…

QT+VS中使用qDebbug()打印调试信息无法显示

首先右键点击项目名称&#xff0c;找到最后一项属性 然后依次设置为如图所示即可 再次编译后&#xff0c;会弹出CMD窗口&#xff0c;出现qDebug的调试信息。 转载于:https://www.cnblogs.com/WindSun/p/10328404.html

WebAPIs移动端特效——不看你就亏大了

Web APIs 本篇学习目标: ✨能够写出移动端触屏事件 ✨能够写出常见的移动端特效 ✨能够使用移动端开发插件开发移动端特效 ✨能够使用移动端开发框架开发移动端特效 ✨能够写出 sessionStorage 数据的存储以及获取 ✨能够写出 localStorage 数据的存储以及获取 ✨能够说出它们两…

MVC是一种用于表示层设计的复合设计模式

它们之间的交互有以下几种&#xff1a;1.当用户在视图上做任何需要调用模型的操作时&#xff0c;它的请求将被控制器截获。2.控制器按照自身指定的策略&#xff0c;将用户行为翻译成模型操作&#xff0c;调用模型相应逻辑实现。3.控制器可能会在接到视图操作时&#xff0c;指定…

Centos7.2源码安装redis

1、下载redis包&#xff08;此处可到官网查看&#xff0c;有相应的命令&#xff09; wget http://download.redis.io/releases/redis-5.0.3.tar.gz 2、解压之后&#xff0c;并进行make编译 tar xzf redis-5.0.3.tar.gz -C /usr/local/cd /usr/local/redis-5.0.3/make如果出现如…

手撸移动端轮播图(内含源码)

移动轮播图 移动端轮播图与PC段轮播图&#xff0c;在技术选择上是有区别的&#xff0c;因为移动端的浏览器版本非常好&#xff0c;对于H5和CSS3的支持非常完美&#xff0c;所以很多效果可以CSS3的方式实现&#xff0c;比如可以使用 Transorm 属性替代原来的动画函数 可以自动…

原创jquery插件treeTable(转)

由于工作需要&#xff0c;要直观的看到某个业务是由那些子业务引起的异常&#xff0c;所以我需要用树表的方式来展现各个层次的数据。 需求&#xff1a; 1、数据层次分明&#xff1b; 2、数据读取慢、需要动态加载孩子节点&#xff1b; 3、支持默认展开多少层。 在网上找到了很…

初探Vue3

&#x1f31c;本篇文章目录\textcolor{green}{本篇文章目录}本篇文章目录 &#x1f31b; &#x1f435; 新构建工具Vite\textcolor{blue}{新构建工具Vite}新构建工具Vite &#x1f435; CompositionAPI火爆来袭\textcolor{blue}{Composition API火爆来袭}CompositionAPI火爆来…

linux执行python命令后permission denied

linux下执行python后显示被拒绝问题定位&#xff1a; 1、检查下要执行的文件的权限是否存在执行权限&#xff0c;否则执行chmod命令赋予权限&#xff1b; 2、若赋予权限后仍然显示没有权限&#xff0c;检查下执行的python文件是否有权限&#xff0c;否则执行chmod赋予执行权限。…

mysql zip 安装

第一步下载mysql.zip https://dev.mysql.com/downloads/mysql/5.7.html#downloads 第二步&#xff1a;解压文件后在其目录下&#xff0c; 新建 my.ini 注意编码为ansi&#xff0c;新建 data 空文件夹 my.ini内容为&#xff1a; [mysql]# 设置mysql客户端默认字符集default…

Vue3的响应式原理解析

Vue3的响应式原理解析 Vue2响应式原理回顾 // 1.对象响应化&#xff1a;遍历每个key&#xff0c;定义getter、setter // 2.数组响应化&#xff1a;覆盖数组原型方法&#xff0c;额外增加通知逻辑 const originalProto Array.prototype const arrayProto Object.create(orig…

react Native 环境安装配置——图解版一目了然

✨原创不易&#xff0c;还希望各位大佬支持一下\textcolor{blue}{原创不易&#xff0c;还希望各位大佬支持一下}原创不易&#xff0c;还希望各位大佬支持一下 &#x1f525; Flutter和reactNative的区别\textcolor{green}{Flutter和react Native的区别}Flutter和reactNative的…

第七章 字典和集合[DDT书本学习 小甲鱼]【2】

7.1.2 字典的各种内置方法在序列里为不存在位置赋值&#xff0c;会出现错误&#xff1b;而在字典不存在得位置赋值&#xff0c;会创建。工厂函数&#xff08;类型&#xff09;以前学过 str(),int(),list(),tuple()....... 1.fromkeys() 用于创建和返回一个新的字典 不是修改 2…

Installing Node.js and Express on Ubuntu

Installing Node.js and Express on Ubuntu 1. 在nodejs官网上下载Linux Binaries(已经包含了npm):2. 安装Node.js下载后解压&#xff0c;并在解压的文件夹中启动Terminal后&#xff0c;输入命令&#xff1a; sudo cp * /usr/local/ -r再输入命令&#xff1a; node -v …

Chrome插件我只服你——10w人都在使用的浏览器插件

✨文章摘要导读\textcolor{blue}{文章摘要导读}文章摘要导读 &#x1f525; 为什么选择Chrome插件\textcolor{green}{为什么选择Chrome插件}为什么选择Chrome插件 &#x1f525; 插件具备的强大优势\textcolor{green}{插件具备的强大优势}插件具备的强大优势 &#x1f525; …

H3C通过端口ID决定端口角色

转载于:https://www.cnblogs.com/fanweisheng/p/11153312.html