首页 > 代码库 > 【NOIP2016】组合数问题
【NOIP2016】组合数问题
写着玩玩……
反正超级sb题。
#include<bits/stdc++.h> typedef long long ll; using namespace std; ll c[2010][2010],h[2010],f[2010][2010]; int n,m,k; inline int read(){ int f=1,x=0;char ch; do{ch=getchar();if(ch==‘-‘)f=-1;}while(ch<‘0‘||ch>‘9‘); do{x=x*10+ch-‘0‘;ch=getchar();}while(ch>=‘0‘&&ch<=‘9‘); return f*x; } int main(){ int T=read();k=read();c[0][0]=1; for(int i=1;i<=2001;i++){ c[i][0]=1; for(int j=1;j<=i;j++){ c[i][j]=(c[i-1][j]+c[i-1][j-1])%k; if(!c[i][j])h[i]++; f[i][j]=f[i-1][j]+h[i]; if(i==j)f[i][j]=f[i-1][j-1]+h[i]; } } while(T--){ n=read();m=read(); if(m>n)m=n; printf("%lld\n",f[n][m]); } }
【NOIP2016】组合数问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。