【bzoj4591】超能粒子炮·改

编程入门 行业动态 更新时间:2024-10-26 00:27:15

【bzoj4591】<a href=https://www.elefans.com/category/jswz/34/1712169.html style=超能粒子炮·改"/>

【bzoj4591】超能粒子炮·改

Portal-->bzoj4591

Solution

  首先这个模数是一个质数

  然后看一下那个\(k\)和\(n\)的范围。。行吧Lucas定理咯

  但是如果直接求:
\[ \sum\limits_{i=0}^{k}\binom n i \]
  那。。稳稳的T啊。。。所以要化一下式子,我们令\(k=ap+b\):
\[ \begin{aligned} \sum\limits_{i=0}^{k}\binom n i&\equiv \sum\limits_{i=0}^k \binom {i/p} {n/p}\binom {i\% p}{n\%p}(mod\ p)\\ &\equiv \sum\limits_{i=0}^{ap-1}\binom {i/p} {n/p}\binom {i\% p}{n\%p}+\sum\limits_{i=ap}^{ap+b}\binom {i/p} {n/p}\binom {i\% p}{n\%p}(mod\ p)\\ &\equiv \sum\limits_{i=0}^{a-1}\binom {i} {n/p}\sum\limits_{i=0}^{p-1}\binom {i}{n\%p}+\binom a {n/p}\sum\limits_{i=0}^b\binom {i}{n\%p} \end{aligned} \]
  然后因为\(p\)比较小(只有\(2333\)真是2333)

  所以我们可以直接暴力处理出\(n,m<=2333\)的\(\binom n m\)的的前缀和

  然后对于范围内的直接调用,范围外的用上面那个式子递归处理就好了

  

  代码大概长这个样子:

#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
const int MOD=2333;
ll c[MOD+10][MOD+10],sum[MOD+10][MOD+10];
ll n,k,T,ans;
void prework(int n);
ll Lucas(ll n,ll m);
ll Min(ll x,ll y){return x<y?x:y;}
ll f(ll n,ll k);int main(){
#ifndef ONLINE_JUDGEfreopen("a.in","r",stdin);
#endifll a,b;scanf("%lld",&T);prework(MOD);for (int o=1;o<=T;++o){scanf("%lld%lld",&n,&k);printf("%lld\n",f(n,k));}
}void prework(int n){c[0][0]=1;for (int i=1;i<=n;++i){c[i][0]=1; c[i][i]=1;for (int j=1;j<i;++j)c[i][j]=(c[i-1][j-1]+c[i-1][j])%MOD;}for (int i=0;i<=n;++i){sum[i][0]=c[i][0];for (int j=1;j<=n;++j)sum[i][j]=(sum[i][j-1]+c[i][j])%MOD;}
}ll Lucas(ll n,ll m){if (n<m) return 0;if (n<MOD&&m<MOD) return c[n][m];return c[n%MOD][m%MOD]*Lucas(n/MOD,m/MOD)%MOD;
}ll f(ll n,ll k){if (k<0) return 0;if (n<MOD&&k<MOD) return sum[n][k];return (f(n/MOD,min(k/MOD-1,n/MOD))*sum[n%MOD][MOD-1]%MOD+Lucas(n/MOD,k/MOD)*sum[n%MOD][k%MOD]%MOD)%MOD;
}

转载于:.html

更多推荐

【bzoj4591】超能粒子炮·改

本文发布于:2024-02-26 23:16:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1704343.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:超能   粒子

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!