拯救世界

推导可得

ans=(n+1)(n+2)(n+3)(n+4)/24

于是乎打了一发py

mdTLE

然后迫不得已写了一发ntt

#include<cstdio>
#include<algorithm>
#include<iostream>
const int mod = 998244353,g=3;
const int maxn = 1001000;
typedef long long ll;
inline int pow(int a,int b,int ans=1){
    for(;b;b>>=1,a=ll(a)*a%mod)
        if(b&1)ans=ll(ans)*a%mod;
    return ans;
}
inline int inv(int x){return pow(x,mod-2);}
int wn[maxn],rev[maxn],lim;
inline void init(int len){
    *wn=lim=1;
    while(lim<len)lim<<=1;
    for(int i=1;i<lim;++i)rev[i]=rev[i>>1]>>1|(i%2*lim/2);
}
inline int reduce(int x){return x+(x>>31&mod);}
inline void fst(int*a,int type){
    for(int i=1;i<lim;++i)if(rev[i]>i)std::swap(a[rev[i]],a[i]);
    for(int mid=1;mid<lim;mid<<=1){
        const int W=pow(g,mod/mid/2);
        for(int k=1;k<mid;++k)wn[k]=ll(wn[k-1])*W%mod;
        for(int j=0;j<lim;j+=mid+mid){
            for(int*A=a+j,*B=A+mid,*w=wn;w!=wn+mid;++A,++B,++w){
                const int x=*A,y=ll(*B)**w%mod;
                *A=reduce(x+y-mod),*B=reduce(x-y);
            }
        }
    }
    if(!type){
        for(int i=0,lm=inv(lim);i<lim;++i)a[i]=ll(a[i])*lm%mod;
        std::reverse(a+1,a+lim);
    }
}
int a[maxn],b[maxn],c[maxn],d[maxn];
char buf[maxn];
int n;
inline void get(int * a){
    for(int i=0;i+1<maxn;++i)
        a[i+1]+=a[i]/10,a[i]%=10;
}
inline void div24(int*a){
    for(int i=maxn-1,res=0;~i;--i){
        res *= 10,res += a[i];
        a[i] = res / 24,res %= 24;
    }
}
int main(){
    fread(buf,1,sizeof buf,stdin);
    for(n=0;isdigit(buf[n]);++n);
    std::reverse_copy(buf,buf+n,a);
    for(int i=0;i<n;++i) b[i]=c[i]=d[i]=a[i]-=48;
    a[0]+=1,b[0]+=2,c[0]+=3,d[0]+=4;
    init(n<<1);
    fst(a,1),fst(b,1),fst(c,1),fst(d,1);
    for(int i=0;i<lim;++i)a[i]=ll(a[i])*c[i]%mod,b[i]=ll(b[i])*d[i]%mod;
    fst(a,0),fst(b,0);
    get(a),get(b);
    init(n<<2);
    fst(a,1),fst(b,1);
    for(int i=0;i<lim;++i)a[i]=ll(a[i])*b[i]%mod;
    fst(a,0),get(a),div24(a);
    for(n=maxn-1;!a[n];--n);
    for(int i=n;~i;--i)putchar(a[i]+48);
}

原文地址:https://www.cnblogs.com/skip1978/p/10346470.html

时间: 2024-08-12 19:27:19

拯救世界的相关文章

九九乘法表拯救世界【误

Private Sub Command1_Click() Dim i, j As Integer Label1.Caption = " 万岁!世界重新得到了和平!" Form1.Cls For i = 1 To 9 For j = 1 To i Print j; "x"; i; "="; j * i, Next j Print Next i End Sub Private Sub Command2_Click() Form1.Cls Label1

【技术宅拯救世界】在Windows Server2012上利用OpenVPN搭建自己的VPN服务器

写在前面的话:前段时间利用VPN免流特别火,我本来打算买一个,但后来发现其实都是用的OpenVPN搭建的,正好我手上有一个腾讯的云服务器,我一想不如就自己搭建一个吧,省点钱,结果就这样浪费了两天的时间,最大的问题在于网上关于用windows server搭建的教程异常的少,大部分都是cent os并且是脚本搭建的,我看了好多,看得我一头雾水...总算在我折腾服务器两天之后建好了属于自己的第一个VPN服务器,但是免流那块,四川联通失败,浪费了我两天的时间,但是为了避免以后搭建再次搭建VPN时发生问

vijos 1225 拯救世界-紧急集合

这是道带权中位数的题,自己一想好像暑假的时候在 noi-openjudge 那个网站写题的时候看过类似的,那个时候的我蒟蒻, 不知道怎么办? 现在重新想起了这一类题,找个时间攻一下吧!毕竟这道题不难, (只要从左往右扫一次,和从右往左扫一次,我再一次可耻地看了题解),思考了一下二维的情况,应该不难,只是把x坐标和y坐标分开而已,加油! 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #def

#技术男拯救世界# 如何自动跳过12306的「查询失败」

我等屌丝用不起Windows,也没法装哪些高大上的抢票浏览器,只好苦逼的刷12306官网.但是刷12306的过程中老是遇到「查询失败」错误,一旦遇到,刷票就自动中断了,让人非常不爽.于是就自己写了下面这个小脚本,用来跳过失败错误并恢复刷票. 使 用方法:打开任何浏览器,登录12306网站,进入查询/刷票页面,打开开发者工具里的网页控制台(Chrome:查看->开发者 ->JavaScript控制台,Firefox:工具->网页开发者->网页控制台,Safari:先打开「首选项」-&

luogu P2000 拯救世界

嘟嘟嘟 题目有点坑,要你求的多少大阵指的是召唤kkk的大阵数 * lzn的大阵数,不是相加. 看到这个限制条件,显然要用生成函数推一推. 比如第一个条件"金神石的块数必须是6的倍数",就是\(1 +x ^ 6 + x ^ {12} + \ldots\),也就是\(\frac{1 - x ^ {6n}}{1 - x ^ 6}\).当\(x \in (-1, 1)\)时,就变成了\(\frac{1}{1 - x ^ 6}\). 剩下的同理. 然后把这10个条件都乘起来,一顿化简,答案就是\

[题解] Luogu P2000 拯救世界

生成函数板子题...... 要写高精,还要NTT优化......异常dl 这个并不难想啊...... 一次召唤会涉及到\(10\)个因素,全部写出来,然后乘起来就得到了答案的生成函数,输出\(n\)次项的系数就好了. 下面把\(10\)个条件列一下 \[1 + x^6 + x^{12} + \cdots = \frac{1}{1-x^6}\] \[1+x^2+x^3+\cdots+x^9 = \frac{1-x^{10}}{1-x}\] \[1+x^2+x^3+x^4+x^5 = \frac{1

基督徒如何对&ldquo;世界&rdquo;

基督徒如何对待"世界"呢?这是一个显然的问题,其实也是一个不显然的问题,让我们从圣经经文本身去看这个话题. 当我们去查考圣经的时候,"世界"这个词在和合本圣经更多的是出现在新约圣经中.在旧约圣经中,"世界"这个词大部分都是实体性的指代神创造的这个世界,或者是这个世界的其中一部分,类似迦南,或者其他的地方,只有少数几处会指代一个意思:阴间. 我们列举经文如下: [创 6:11] 世界在 神面前败坏,地上满了强暴. [创 6:12] 神观看世界,见是

手机的次世代:科幻会成为现实吗?

当贝尔在1876年3月10日发明第一台电话机(另一观点认为意大利人安东尼奥·梅乌奇是电话机发明者)时,并没有人想到这个构建了便利通讯方式的工具,会对整个人类产生如此深远的影响. 因为在这之后的一百多年社会发展历程中,这种基于无线通信方式带来的人类文明变革,已经超越了所有历史中的文明时代.在今天的生活中,从普通电话到智能手机的演变过程,也已经将人类推向了一个全新的文明高度,并且在不久远的未来,以手机为主题的通讯设备将有望承载着一个新的时代. 这并非危言耸听,也并非遥不可及.事实上,一些已经逐渐面世

2016年终总结

这本来是节前最后一天上班写的,放假放的太突然,上午十一点就通知关电脑,收拾卫生,放假.所以你现在才看到. 时间就像一把无情的刻刀,无情的雕刻着岁月的流梭,却不允许我们做任何的缅怀,2016年大概做了这些事: 1 大半年的时间在异地出差. 公司一个电商项目需要,被派到外地,出差了大半年时间,跟家里聚少离多,虽然经常视频,但女儿见到我都显得尴尬了.决定以后尽量不独自远行了,没有目睹孩子的成长会遗憾终生.小孩应该希望面前有个榜样,所以要努力. 2 现场经历了京东618,天猫双11电商大促,感受大数据时