首页 > 其他分享 >二十八 211. 计算系数 (组合计数|逆元)

二十八 211. 计算系数 (组合计数|逆元)

时间:2024-04-09 11:15:38浏览次数:22  
标签:二十八 int 211 private nextInt 逆元 static sc mod

211. 计算系数 (组合计数|逆元)
image

数论之快速幂、扩欧算法、同余与逆元

组合计数

import java.util.*;

public class Main {
    private static final int mod = 10007;
    private static int[][] C = new int[1010][1010];
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int k = sc.nextInt();
        int n = sc.nextInt();
        int m = sc.nextInt();
        
        a %= mod;
        b %= mod;
        
        for (int i = 0; i <= k; i++) {
            for (int j = 0; j <= i; j++) {
                if (j == 0) {
                    C[i][j] = 1;
                }
                else {
                    C[i][j] = (C[i - 1][j - 1] + C[i - 1][j]) % mod;
                }
            }
        }
        int res = C[k][n];
        for (int i = 0; i < n; i++) {
            res = res * a % mod;
        }
        for (int i = 0; i < m; i++) {
            res = res * b % mod;
        }
        
        System.out.println(res);
    }
}

逆元

import java.util.*;

public class Main {
    private static final int mod = 10007;
    
    private static int fastPow(int a, int k) {
        a %= mod;
        int res = 1;
        while (k != 0) {
            if ((k & 1) != 0) {
                res = res * a % mod;
            }
            a = a * a % mod;
            k >>= 1;
        }
        return res;
    }
    
    private static int C(int n, int m) {
        int res = 1;
        for(int i = 1, j = n; i <= m; i++, j--) {
            res = res * j % mod * fastPow(i, mod - 2) % mod;
        }
        return res;
    }
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int k = sc.nextInt();
        int n = sc.nextInt();
        int m = sc.nextInt();
        
        int res = C(k, n) * fastPow(a, n) % mod * fastPow(b, m) % mod;
        System.out.println(res);
    }
}

标签:二十八,int,211,private,nextInt,逆元,static,sc,mod
From: https://www.cnblogs.com/he0707/p/18123444/lanqiaobei28

相关文章

  • 实验一-密码引擎-3-加密API研究--20211313
    不同的加密API研究CryptoAPICryptoAPI功能功能:为应用程序开发者提供在Win32环境下使用加密、验证等安全服务时的标准加密接口。CryptoAPI处于应用程序和CSP(cryptographicserviceprovider)之间。CryptoAPI共有五部分组成:简单消息函数(SimplifiedMessageFunctions)、低层消息......
  • 基于FPGA的数据采集、编码、通讯和存储系统设计(即FPGA+RTL8211千兆以太网+SD卡存储+RT
    介绍一个小项目,加强对FPGA相关接口的整体把握。硬件及软件代码梳理:硬件系统的主要功能框图,其中FPGA作为处理单元,实现了包括电流和电压的采集、千兆以太网通讯、SD卡本地数据存储和串口通讯等。已经过板级测试,测试包含:千兆网通讯收发测试、AD采集的数据验证、SD卡存储验证......
  • 20211314 实验一-密码引擎-3-加密API研究
    任务详情密码引擎API的主要标准和规范包括:1微软的CryptoAPI2RAS公司的PKCS#11标准3中国商用密码标准:GMT0016-2012智能密码钥匙密码应用接口规范,GMT0018-2012密码设备应用接口规范等研究以上API接口,总结他们的异同,并以龙脉GM3000Key为例,写出调用不同接口的代码,提交博客......
  • 【CSP】202112-2 序列查询新解
    题目大意:给定一长度为n+1的严格单增数列A[a0,a1,a2,a3...,an],其中a0=0,an<N定义f(x)为数列A中小于等于x的最大整数的下标,r=floor(N/(n+1)),g(x)=floor(x/r)。当N<1e9,n<1e4的时候,求解|g(x)-f(x)|之和,x=0,1,2...,N-1 分析:数据规模较大,如果一项一项求和将会超时。为优化朴素方法,观......
  • 20211325高进涛加密API研究
    密码引擎-加密API研究 Content任务详情0.研究学习原始文档CryptoAPIPKCS#11GM/T0016-2012智能密码钥匙密码应用接口规范GM/T0018-2012密码设备应用接口规范1.总结这些API在编程中的使用方式CryptoAPIPKCS#11SKF2.列出这些API包含的函数,进行分类,并总结它......
  • 【华为OD机试真题】211、最优资源分配、芯片资源占用 | 机试真题+思路参考+代码分析(C
    文章目录一、题目......
  • 20211317李卓桐Exp3-免杀原理实验报告
    Exp3-免杀原理任务详情1.实践内容(4分+1分附加分)1.1方法(分)正确使用msf编码器,使用msfvenom生成如jar之类的其他文件(1分),veil,加壳工具(1分),使用C+shellcode编程(1分),1.2通过组合应用各种技术实现恶意代码免杀(1分)(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共......
  • 逆元
    (1)递推题注意别在循环中求逆元\(O(nlogn)\)。(2)关于逆元,\(\frac{1}{n}=\frac{1}{nm}*m\),所以\(n^{-1}=m^{-1}n^{-1}*m\)。于是先求右端点逆元再从右往左推。y[n]=mpow(mpow(a+b,n),mod-2);for(inti=n;i>0;i--)y[i-1]=mul(y[i],a+b);线性求逆......
  • [ABC211F] Rectilinear Polygons 题解
    [ABC211F]RectilinearPolygons题解思路什么的上一篇题解已经写的非常明白了,这里只是提供一个补充&另一个实现的方法。思路解析先说结论:扫描线。顾名思义,扫描线的本质就是用一条线沿着\(x\)或\(y\)轴扫过去,每碰到一条边就记录一下加边后是面积是增加还是减少,然后用树状......
  • [ABC211D] Number of Shortest paths 题解
    [ABC211D]NumberofShortestpaths题解思路解析题目其实说得很明白了,就是最短路计数。我们可以用一个\(s_i\)表示从起点到\(i\)的最短路计数,然后进行bfs,由于边权为\(1\),所以可以使用bfs求最短路。如果\(u\tov\)是\(v\)的最短路的其中一段,就把\(s_u\tos_v\)......