• noi.ac #65 triangle


    这个题没有 (a), (b) 的时候就是一个简单的组合数。

    现在加上 (a), (b) 好像还是个组合数^^

    其实,找找规律就可以知道,对第 (n)(m) 列的数,(a) 被计算了 (n-m) 次,(b) 被计算了 (m-1) 次。

    但是这题的数据要求线性求逆元,反正我会。。

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    const ll N = 1e5 + 10;
    const int mod = 1e9 + 9;
    ll t, n, m, a, b;
    ll mul[N], inv[N];
    template<class I>
    inline void rd(I &x) {
    	ll f = 1;
    	char c = getchar();
    	for(; c < '0' || c > '9'; c = getchar()) if(c == '-') f = -1;
    	for(x = 0; c >= '0' && c <= '9'; x = (x << 3) + (x << 1) + (c & 15), c = getchar());
    	x *= f;
    }
    ll ksm(ll a, ll b) {
    	ll res = 1;
    	while (b) {
    		if (b & 1) res = res * a % mod;
    		a = a * a % mod;
    		b >>= 1;
    	}
    	return res;
    }
    ll C(ll n, ll m) {
    	if (m > n) return 0;
    	ll res = inv[m] * inv[n-m] % mod;
    	res = res * mul[n] % mod;
    	return res;
    }
    int main() {
    	mul[0] = inv[0] = 1;
    	for (ll i = 1; i <= N; i++) mul[i] = mul[i - 1] * i % mod;
    	inv[N] = ksm(mul[N], mod - 2);
    	for (ll i = N - 1; i; i--) inv[i] = inv[i + 1] * (i + 1) % mod;
    	rd(t);
    	while (t--) {
    		rd(a), rd(b), rd(n), rd(m);
    		ll ans = C(n - 1, m - 1);
    		ans = ans * ksm(a, n - m) % mod;
    		ans = ans * ksm(b, m - 1) % mod;
    		printf("%d
    ", ans);
    	}
    	return 0;
    }
    
  • 相关阅读:
    websocket简单理解
    对两个列表合成一个列表后进行排序
    爬取今日头条财经版块新闻
    Python的hasattr(),getattr(),setattr()
    Django基础
    pymysql模块的使用
    我一定要学好英语
    Django项目的创建
    MySQL数据库(安装+增删改查)
    jQuery
  • 原文地址:https://www.cnblogs.com/11haonb/p/11620155.html
Copyright © 2020-2023  润新知