• soj 3252 Choose 组合数对素数取余


    由于素数P很小,故先打阶乘的余数表(小于P的所有正数阶乘对P的余数表)。

    /*
    * soj3252.c
    *
    * Created on: 2011-10-10
    * Author: bjfuwangzhu
    */

    #include<stdio.h>
    #define nmod 10007
    int num[nmod];
    void init() {
    int i;
    for (i = 1, num[0] = 1; i < nmod; i++) {
    num[i] = num[i - 1] * i % nmod;
    }
    }
    int modular_exp(int a, int b) {
    int res, temp;
    res = 1 % nmod,temp = a % nmod;
    while (b) {
    if (b & 1) {
    res = res * temp % nmod;
    }
    temp = temp * temp % nmod;
    b >>= 1;
    }
    return res;
    }
    int C(int a, int b) {
    int res;
    if (b > a) {
    return 0;
    }
    b = num[b] * num[a - b] % nmod;
    a = num[a];
    res = modular_exp(b, nmod - 2);
    res = res * a % nmod;
    return res;
    }
    void solve(int n, int m) {
    int res, a, b;
    res = 1;
    while (n || m) {
    a = n % nmod,b = m % nmod;
    res = res * C(a, b) % nmod;
    n /= nmod,m /= nmod;
    }
    printf("%d\n", res);
    }
    int main() {
    #ifndef ONLINE_JUDGE
    freopen("data.in", "r", stdin);
    #endif
    int t, n, m;
    init();
    scanf("%d", &t);
    while (t--) {
    scanf("%d %d", &n, &m);
    solve(n, m);
    }
    return 0;
    }

  • 相关阅读:
    「洛谷 NOIP 计划 2021」【学习1】降维技巧
    组合数取模 合集
    浅谈并查集
    四边形不等式优化 dp (doing)
    qbxt数学五一Day4
    qbxt五一数学Day3
    qbxt五一数学Day2
    qbxt五一数学Day1
    浅谈拉格朗日插值
    10-交换排序:冒泡排序
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/2205401.html
Copyright © 2020-2023  润新知