SHOI2015 超能粒子炮·改

编程入门 行业动态 更新时间:2024-10-25 14:24:42

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

SHOI2015 超能粒子炮·改

$S_n^k = \sum_{i=0}^k C_n^i$ 膜 $2333$

Lucas 定理的高端操作 学习了

#include<bits/stdc++.h>
#define LL long long
using namespace std;
inline int read()
{int x = 0,f = 1;char ch = getchar();for(;!isdigit(ch);ch = getchar())if(ch == '-')f = -f;for(;isdigit(ch);ch = getchar())x = 10 * x + ch - '0';return x * f;
}const int mod=2333;int c[mod+1][mod+1],sum[mod+1][mod+1];LL lucas(LL n,LL k)
{if(n<k||k<0)return 0;if(n<mod&&k<mod)return c[n][k];return lucas(n/mod,k/mod)*c[n%mod][k%mod]%mod;
}LL cal(LL n,LL k)
{if(k<0)return 0;return (cal(n/mod,k/mod-1)*sum[n%mod][mod-1]+lucas(n/mod,k/mod)*sum[n%mod][k%mod])%mod;
}int main()
{c[0][0]=sum[0][0]=1;for(int i=1;i<=mod;i++)sum[0][i]=1;for(int i=1;i<=mod;i++){c[i][0]=sum[i][0]=1;for(int j=1;j<=i;j++)c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod,sum[i][j]=(sum[i][j-1]+c[i][j])%mod;for(int j=i+1;j<=mod;j++)sum[i][j]=sum[i][j-1];}int T;scanf("%d",&T);while(T--){LL n,k;scanf("%lld%lld",&n,&k);printf("%lld\n",cal(n,k));}
}
View Code

 

转载于:.html

更多推荐

SHOI2015 超能粒子炮·改

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

发布评论

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

>www.elefans.com

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