zoukankan      html  css  js  c++  java
  • #排列组合#CF1081C Colorful Bricks

    题目

    一共 (n) 块砖排成一排,把每块砖涂成 (m) 种颜色中的一种,
    其中恰有 (k) 块颜色与其左边的那块砖不同(不包括第一块),问涂色方案数,对 (998244353) 取模。


    分析

    先钦定第一块的颜色,题意也就是分为(k+1)个颜色段,
    这可以用隔板法实现,也就是(C(n-1,k))
    然后后面(k)段就可以在剩余(m-1)种颜色中选择,
    所以最后答案就是(m*C(n-1,k)*(m-1)^k)


    代码

    #include <cstdio>
    #include <cctype>
    #define rr register
    using namespace std;
    const int mod=998244353;
    inline signed ksm(int x,int y){
    	rr int ans=1;
    	for (;y;y>>=1,x=1ll*x*x%mod)
    	    if (y&1) ans=1ll*ans*x%mod;
    	return ans;
    }
    inline signed C(int n,int m){
    	rr int mn=m<n-m?m:n-m,mx=n-mn;
    	rr int ans0=1,ans1=1,ans=1;
    	for (rr int i=1;i<=n;++i){
    		ans=1ll*ans*i%mod;
    		if (mn==i) ans0=ksm(ans,mod-2);
    		if (mx==i) ans1=ksm(ans,mod-2); 
    	}
    	return 1ll*ans*ans0%mod*ans1%mod;
    }
    signed main(){
    	rr int n,m,k; scanf("%d%d%d",&n,&m,&k);
    	return !printf("%d",1ll*m*ksm(m-1,k)%mod*C(n-1,k)%mod);
    } 
    
  • 相关阅读:
    csp-s模拟103
    csp-s模拟102
    csp-s模拟101
    csp-s模拟100
    csp-s模拟99
    csp-s模拟98
    csp-s模拟97
    csp-s模拟96
    csp-s模拟95
    csp-s模拟94
  • 原文地址:https://www.cnblogs.com/Spare-No-Effort/p/14485473.html
Copyright © 2011-2022 走看看