zoukankan      html  css  js  c++  java
  • Bzoj4591 [Shoi2015]超能粒子炮·改

    Time Limit: 10 Sec  Memory Limit: 256 MB
    Submit: 763  Solved: 281

    Description

    曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以发射威力更加
    强大的粒子流的神秘装置。超能粒子炮·改相比超能粒子炮,在威力上有了本质的提升。它有三个参数n,k。它会
    向编号为0到k的位置发射威力为C(n,k) mod 2333的粒子流。现在SHTSC给出了他的超能粒子炮·改的参数,让你求
    其发射的粒子流的威力之和模2333。

    Input

    第一行一个整数t。表示数据组数。
    之后t行,每行二个整数n,k。含义如题面描述。
    k<=n<=10^18,t<=10^5

    Output

    t行每行一个整数,表示其粒子流的威力之和模2333的值。

    Sample Input

    1
    5 5

    Sample Output

    32

    HINT

    Source

    数学问题 组合数

    题解留坑待填……

    因为第39行注释掉的那句,WA了大半个小时

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 #include<cstdio>
     5 #include<cmath>
     6 #define LL long long
     7 using namespace std;
     8 const int mod=2333;
     9 const int mxn=2610;
    10 LL read(){
    11     LL x=0,f=1;char ch=getchar();
    12     while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    13     while(ch>='0' && ch<='9'){x=x*10-'0'+ch;ch=getchar();}
    14     return x*f;
    15 }
    16 int fac[mxn],inv[mxn];
    17 void init(int n){
    18     int mxn=n+1;
    19     fac[0]=fac[1]=1;inv[0]=inv[1]=1;
    20     int i,j;
    21     for(i=2;i<mxn;i++){
    22         fac[i]=(LL)fac[i-1]*i%mod;
    23         inv[i]=((-mod/i*(LL)inv[mod%i])%mod+mod)%mod;
    24     }
    25     for(i=2;i<mxn;i++)inv[i]=(LL)inv[i-1]*inv[i]%mod;
    26     return;
    27 }
    28 LL C(LL n,LL m){
    29     if(n<m)return 0;
    30     return (LL)fac[n]*inv[m]%mod*inv[n-m]%mod;
    31 }
    32 LL lucas(LL n,LL m){
    33     if(n<m || m<0)return 0;
    34     if(n<mod && m<mod)return C(n,m);
    35     return lucas(n/mod,m/mod)*C(n%mod,m%mod)%mod;
    36 }
    37 int smm[mxn][mxn];
    38 LL calc(LL n,LL m){
    39 //    if(n<m)return 0;
    40     if(n<mod && m<mod)return smm[n][m];
    41     return (calc(n/mod,m/mod-1)*smm[n%mod][mod-1]+lucas(n/mod,m/mod)*smm[n%mod][m%mod])%mod;
    42 }
    43 int main(){
    44     int i,j;
    45     init(2333+2);
    46     for(i=0;i<mod;i++){
    47         smm[i][0]=1;
    48         for(j=1;j<mod;j++)
    49             smm[i][j]=(smm[i][j-1]+C(i,j))%mod;
    50     }
    51     int T=read();LL n,k;
    52     while(T--){
    53         n=read();k=read();
    54         printf("%lld
    ",calc(n,k));
    55     }
    56     return 0;
    57 }
  • 相关阅读:
    Contiki 2.7 Makefile 文件(二)
    Contiki 2.7 Makefile 文件(一)
    The Contiki build system
    Contiki Network Stack
    【CCPC-Wannafly Winter Camp Day4 (Div1) I】咆咆咆哮(三分+贪心)
    【洛谷5246】[集训队互测2016] 消失的源代码(有趣的提答题)
    【CCPC-Wannafly Winter Camp Day4 (Div1) D】欧拉回路(分类讨论)
    【CCPC-Wannafly Winter Camp Day4 (Div1) F】小小马(分类讨论)
    【CCPC-Wannafly Winter Camp Day4 (Div1) C】最小边覆盖(简单题)
    【CCPC-Wannafly Winter Camp Day4 (Div1) A】夺宝奇兵(水题)
  • 原文地址:https://www.cnblogs.com/SilverNebula/p/6910315.html
Copyright © 2011-2022 走看看