[BZOJ 4591] 超能粒子炮-改
2024-08-27 07:18:03
Link:
Solution:
记录一下推$\sum_{i=0}^k C_n^i$的过程:
其实就是将相同的$i/p$合起来算,这样每个里面都是一个可以预处理的子问题
接下来递归下去算即可
Tip:推式子时尽量化出与模数相关的量方便预处理
Code:
#include <bits/stdc++.h> using namespace std;
#define X first
#define Y second
#define pb push_back
typedef double db;
typedef long long ll;
typedef pair<int,int> P;
int T;const int MOD=;
ll C[MOD+][MOD+],sum[MOD+][MOD+]; ll Lucas(ll x,ll y)
{
if(y==) return ;
return Lucas(x/MOD,y/MOD)*C[x%MOD][y%MOD]%MOD;
}
ll cal(ll n,ll k)
{
if (k<) return ;
return (cal(n/MOD,k/MOD-)*sum[n%MOD][MOD-]+Lucas(n/MOD,k/MOD)*sum[n%MOD][k%MOD])%MOD;
}
int main()
{
C[][]=;sum[][]=;
for (int i=;i<MOD;i++) sum[][i]=;
for (int i=;i<MOD;i++)
{
C[i][]=sum[i][]=;
for (int j=;j<=i;j++) C[i][j]=(C[i-][j-]+C[i-][j])%MOD;
for (int j=;j<MOD;j++) sum[i][j]=(sum[i][j-]+C[i][j])%MOD;
}
scanf("%d",&T);
while (T--)
{
ll n,k;
scanf("%lld%lld",&n,&k);
printf("%lld\n",cal(n,k));
}
return ;
}
最新文章
- Oracle数据库shutdown immediate被hang住的几个原因
- nio 弊端
- MySQL使用详解--根据个人学习总结
- hdu 1735 字数统计
- nmap与ntop
- call(this)引起的对闭包的重新理解
- div模块变灰
- 8.WCF简化的 AJAX(*)
- 总结&;计划
- 数学之路(3)-机器学习(3)-机器学习算法-PCA
- Xcode4.6 自制iOS可用的 Framework
- iOS-UINavigationBar【颜色设置】
- fiddler2请求参数乱码
- Single Number II leetcode java
- Linux内核分析——第三周学习笔记
- XPages访问关系型数据库技术与最佳实践
- flash object实现视频播放效果
- BZOJ1670 [Usaco2006 Oct]Building the Moat护城河的挖掘
- spring boot 使用application.properties 进行外部配置
- 【bzoj1806】[Ioi2007]Miners 矿工配餐 dp