首页 > 其他分享 >lgB3717 计算组合数

lgB3717 计算组合数

时间:2024-03-10 20:25:05浏览次数:22  
标签:return ifac 组合 int -- 计算 fac lgB3717 MOD

给出T次询问,每次给出n和m,求C(n,m)对998244353取模的结果。为了避免输出太多内容,只需要输出所有查询结果的异或和。
1<=T<=5E6; 0<=m<=n<=5E6

先O(n)预处理出所有数的阶乘及其对应的乘法逆元,然后O(1)处理每次询问。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,a,b) for(int i=a; i<=b; i++)
#define per(i,a,b) for(int i=b; i>=a; i--)

const int MOD = 998244353;
const int Z = 5000005;
int T, N, fac[Z], ifac[Z];
int comb(int n, int m) {
    return fac[n] * ifac[m] % MOD * ifac[n-m] % MOD;
}
int power(int a, int b) {
    int r = 1;
    for (int t = a; b; b /= 2) {
        if (b & 1) r = r * t % MOD;
        t = t * t % MOD;
    }
    return r % MOD;
}
void solve() {
    cin >> T >> N;
    fac[0] = 1;
    rep(i,1,N) fac[i] = fac[i-1] * i % MOD;
    ifac[N] = power(fac[N], MOD-2);
    per(i,0,N-1) ifac[i] = ifac[i+1] * (i+1) % MOD;
    int ans = 0;
    while (T--) {
        int n, m;
        cin >> n >> m;
        ans ^= comb(n, m);
    }
    cout << ans << "\n";
}

signed main() {
    cin.tie(0)->sync_with_stdio(0);
    int t = 1;
    while (t--) solve();
    return 0;
}

标签:return,ifac,组合,int,--,计算,fac,lgB3717,MOD
From: https://www.cnblogs.com/chenfy27/p/18064719

相关文章

  • lgP3807 lucas定理计算组合数
    有T次询问,每次给出整数n,m,p,计算C(n+m,n)%p的值。输入保证p为质数。1<=n,m,p<=1E5;1<=T<=10n较大,p较小且为质数时,可以用lucas定理来计算组合数:lucas(n,k,p)=lucas(n/p,k/p,p)*C(n%p,k%p,p)#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#definer......
  • 计算机基础知识问答:操作系统篇
    进程和线程的区别?调度:进程是资源管理的基本单位,线程是程序执行的基本单位。切换:线程上下文切换比进程上下文切换要快得多。拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但是可以访问隶属于进程的资源。系统开销:创建或撤销进程时,系统都要为之分配或回收系统......
  • 通达信《鱼窝打分+鱼游打分》鱼仙指标 尾盘专用打分1支 止跌止盈量化计算 盘中捉涨停
    {通达信《鱼窝打分+鱼游打分》鱼仙指标尾盘专用打分1支止跌止盈量化计算盘中捉涨停捉妖源码文件分享}通达信《鱼窝打分+鱼游打分》鱼仙指标尾盘专用打分1支止跌止盈量化计算源码文件分享本指标每天尾盘打分1只《2022鱼仙指标盘中捉涨停妖栏》鱼窝打分鱼游打分稳......
  • 计算机网络知识点
    两种交换方式分组(packet)交换不长期占用链路,将报文分组,所有分组由路由器按照目的地址丢到网络中,也就是用户不需要发送/接收分组时就不占用网络资源。电路(circuit)交换通信双方建立一条专用链路,不进行分组交换时这条链路也不能给别人用。路由器与交换机路由器(圆)工作在网络层(......
  • 通达信突破组合指标公式源码
    {通达信突破组合指标公式源码}量比:=V/REF(MA(V,1),1);五日涨幅:((C-REF(C,5))/REF(C,5)*100)NODRAW;今获利:WINNER(C)*100,NODRAW;昨获利:=REF(今获利,1);获利比增:今获利-昨获利,NODRAW;多方力度:=3*SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1)-2*SM......
  • 计算机操作系统(第四版)- 汤小丹 - 课后习题答案
    计算机操作系统(第四版)汤小丹课后习题答案第一章1.设计现代OS的主要目标是什么?答: (1)有效性  (2)方便性  (3)可扩充性  (4)开放性2.OS的作用可表现在哪几个方面?答:(1)OS作为用户与计算机硬件系统之间的接口(2)OS作为计算机系统资源的管理者(3)OS......
  • 我与计算机
    我开始选择计算机就是瞎弄,根本不了解这个专业。然后开始了半年的学习我懂得了一些计算机之类的东西,计算机原来可以改变我的生活,我小时候曾经幻想过成为一个黑客高手去盗取机密,哈哈哈当然也是想想自己也没有那个能力,我开始接触计算机才发现自己连打字都打不好,PPT,word真的是叫我头大......
  • 如何理解计算机类论文、机器学习论文、人工智能AI论文中的“soft”和“hard”呢?
    如何理解计算机类论文、机器学习论文、人工智能AI论文中的“soft”和“hard”呢?最近在看论文中总看到带有“soft”和“hard”的专业术语(terminology),一般二者都是作为对比进行出现的,那么问题就是在英文的计算机类论文的表达中这个“soft”和“hard”的区别点是什么?其实这个答案......
  • MySql中SUM函数计算错误问题
    前言今天一个很久前做的项目突然找到我,说是之前做的项目中,页面上数据汇总和列表中的数据的总数存在对不上的问题。说是列表是对的,但是根据列表统计出来的数据要比正常小很多。排查这个项目已经好几年了,之前用了很久都是正常的,不可能会突然出问题了;我觉得这个统计肯定是没问题了......
  • Vue — 计算属性(computed)详解
    Vue.js中的计算属性是基于它的响应式系统来实现的,它可以根据Vue实例的数据状态来动态计算出新的属性值。在Vue组件中,计算属性常用于对数据进行处理和转换,以及动态生成一些需要的数据。一、使用方式1.定义计算属性: 在Vue组件中,通过在 computed 对象中定义计算属性名称及......