zoukankan      html  css  js  c++  java
  • 洛谷 P3807 【模板】卢卡斯定理

    题目背景

    这是一道模板题。

    题目描述

    给定n,m,p(1le n,m,ple 10^51n,m,p105)

    求 C_{n+m}^{m} mod pCn+mm mod p

    保证P为prime

    C表示组合数。

    一个测试点内包含多组数据。

    输入输出格式

    输入格式:

     

    第一行一个整数T(Tle 10T10),表示数据组数

    第二行开始共T行,每行三个数n m p,意义如上

     

    输出格式:

     

    共T行,每行一个整数表示答案。

     

    输入输出样例

    输入样例#1: 复制
    2
    1 2 5
    2 1 5
    输出样例#1: 复制
    3
    3
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define MAXN 100000
    using namespace std;
    int T,p;
    long long sum[MAXN];
    long long pow(long long a,long long x,long long p){
        long long s=1%p;
        for(;x;x>>=1){
            if(x&1)    s=s*a%p;
            a=a*a%p;
        }
        return s;
    }
    long long C(long long n,long long m){
        if(m>n)    return 0;
        return sum[n]*pow(sum[m],p-2,p)%p*pow(sum[n-m],p-2,p)%p;
    }
    long long Lucas(long long n,long long m){
        if(m==0)    return 1;
        return C(n%p,m%p)*Lucas(n/p,m/p)%p;
    }
    int main(){
        scanf("%d",&T);
        while(T--){
            int n,m;
            scanf("%d%d%d",&n,&m,&p);
            sum[0]=1;
            for(int i=1;i<=p;i++)    sum[i]=sum[i-1]*i%p;
            cout<<Lucas(n+m,n)<<endl;
        }
    }
     
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    CCF NOI1062 计算曼哈顿距离
    CCF NOI1061 Wifi密码
    CCF NOI1073 放苹果
    CCF NOI1072 爬楼梯
    CCF NOI1071 Pell数列
    CCF NOI1064 计算斐波那契第n项
    NOI训练行动路线图
    CCF NOI1060 雷同检测
    CCF NOI1059 表达式求值
    CCF NOI1057 石头剪刀布
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7793850.html
Copyright © 2011-2022 走看看