【洛谷p2822】组合数问题

时间:2023-03-09 17:14:54
【洛谷p2822】组合数问题

(突然想          ??忘掉了wdt)

(行吧那就%%%hmr

组合数问题【传送门】

【洛谷p2822】组合数问题(因为清明要出去培训数学知识所以一直在做数论)


组合数<=>杨辉三角形(从wz那拐来的技能

#include<iostream>
#include<cstdio>
#include<string>
#include<cmath>
#include<algorithm>
#include<cstring>//万年不变头文件
using namespace std;
int t,k,c[][],f[][],n,m;//c数组用来存放杨辉三角是否为k的倍数,
f数组用来存放在1-c[i][j]中为k的倍数的数个数
void write(long long a){ //从某只大佬那拐来的神奇”快输“,我就这么叫了【吐舌】
if(a>)write(a/);
putchar(a%+'');
} int main()
{
scanf("%d%d",&t,&k);
for(int i=;i<=;i++)c[i][]=;
for(int i=;i<=;i++)
for(int j=;j<=i;j++)
c[i][j]=(c[i-][j-]+c[i-][j])%k;//见上面懒得写辽
for(int i=;i<=;++i){
for(int j=;j<=i;++j){
f[i][j]=f[i-][j]+f[i][j-]-f[i-][j-];
if(!c[i][j])f[i][j]++;
}
f[i][i+]=f[i][i];
}
for(int i=;i<=t;i++){
scanf("%d%d",&n,&m);
if(m>n)m=n;//需要满足取小
write(f[n][m]);
putchar('\n');
}
return ;
}

end-

(刷存在:qingmingyaoqupeixunjiuwomenzuigui,qifen