zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    将数据写入Word模版,生成PDF并加水印
    JSPDF 中文乱码
    DataTable 计算列
    ZIP压缩类
    统一社会信用代码验证
    avalon SVG 画流程图
    横线
    验证身份证合法性
    Centos7.3安装Mysql8.0
    MVC全局验证登陆信息
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/2205401.html
Copyright © 2011-2022 走看看