zoukankan      html  css  js  c++  java
  • [NOIp2016] 组合数问题

    洛谷 P2822 传送门

    这么水的题我居然还调了好几次......

    对于所有询问,k都是一样的。

    所以先用杨辉三角求出2000以内所有组合数mod k的值c[i][j]。

    如果c[i][j]%k==0,那么c[i][j]对答案的贡献f[i][j]就是1。

    最后对f[i][j]求个前缀和就好了。

     1 #include<cstdio>
     2 
     3 int t,k,n,m;
     4 int c[2005][2005];
     5 int f[2005][2005];
     6 
     7 int main()
     8 {
     9     scanf("%d%d",&t,&k);
    10     c[0][0]=1%k;
    11     for(int i=1;i<=2000;i++)
    12     {
    13         c[i][0]=1%k;
    14         for(int j=1;j<=i;j++)
    15         {
    16             c[i][j]=(c[i-1][j]+c[i-1][j-1])%k;
    17         }
    18     }
    19     for(int i=0;i<=2000;i++)
    20     {
    21         for(int j=0;j<=i;j++)
    22         {
    23             if(!c[i][j])f[i][j]=1;
    24         }
    25     }
    26     for(int i=1;i<=2000;i++)
    27     {
    28         f[i][0]+=f[i-1][0];
    29         for(int j=1;j<=2000;j++)
    30         {
    31             f[i][j]+=f[i-1][j]+f[i][j-1]-f[i-1][j-1];
    32         }
    33     }
    34     for(int i=1;i<=t;i++)
    35     {
    36         scanf("%d%d",&n,&m);
    37         if(m>n)m=n;
    38         printf("%d
    ",f[n][m]);
    39     }
    40     return 0;
    41 }
  • 相关阅读:
    序例化-Externalizable 接口
    线程休眠
    线程优先级
    const & 用法
    AcGePoint3d ads_point 转换
    结果缓冲区 resbuf具体用法
    选择集用法
    引用用法
    通过用户选择获取各种东西
    ARX中类型强制转换
  • 原文地址:https://www.cnblogs.com/cervusy/p/9734168.html
Copyright © 2011-2022 走看看