NC229275. Count the Arrays
描述
输入描述
第一行包含两个整数。
输出描述
输出一个整数,表示满足上述所有条件的数组的数量,取模
示例1
输入:
3 4
输出:
6
说明:
示例2
输入:
3 5
输出:
10
示例3
输入:
42 1337
输出:
806066790
示例4
输入:
100000 200000
输出:
707899035
C++ 解法, 执行用时: 202ms, 内存消耗: 420K, 提交时间: 2022-02-09 15:17:58
#include<bits/stdc++.h> using namespace std; int n, m, mo=998244353; long long s=1, ans; long long ksm(long long a, int b){ long long s=1; while(b){ if(b&1) s=s*a%mo; a=a*a%mo, b>>=1; } return s; } int main(){ scanf("%d%d", &n, &m); for(int i=1; i<=n-2; i++){ s=s*(n-1-i)%mo; ans+=s; s=s*ksm(i, mo-2)%mo; } s=1, ans%=mo; for(int i=1; i<n; i++){ s=s*(m-i+1)%mo*ksm(i, mo-2)%mo; } printf("%lld", ans*s%mo); return 0; }
pypy3 解法, 执行用时: 279ms, 内存消耗: 26232K, 提交时间: 2021-10-29 01:13:11
mod = 998244353 def C(n,m): ans=1 for i in range(1,m+1): ans=ans*(n-m+i)%mod ans=ans*pow(i,mod-2,mod) return ans n,m = map(int,input().split()) if n==2: print(0) else: ans = C(m,n-1)*(n-2)%mod*pow(2,n-3,mod)%mod print(ans)