菜鸡求助,WA on #5#6#9,悬赏2关注
查看原帖
菜鸡求助,WA on #5#6#9,悬赏2关注
534008
CSPJ10pts楼主2023/1/21 22:27

85pts

#include <iostream>
using namespace std;
unsigned long long a, b, mod = 1000000007;
unsigned long long qpow (unsigned long long x, unsigned long long y, unsigned long long p) {
	unsigned long long ans = 1;
	while (y > 0) {
		if (y & 1) ans = (ans * x) % p;
		x = (x * x) % p;
		y >>= 1;
	}
	return ans;
} // 此为快速幂
unsigned long long c(unsigned long long x, unsigned long long y) {
    unsigned long long sum = 1, chu = 1;
    for (unsigned long long n = x, m = y; m >= 1; n--, m--) {
        sum *= n;
        if (sum % m == 0) sum /= m;
        else chu *= m;
    }
    return ((sum % mod) * qpow(chu, mod - 2, mod)) % mod;
} // 此为组合计算
signed main() {
    cin >> a >> b;
    if (a < b) {
        cout << 0 << endl;
        return 0;
    }
    cout << ((qpow(2, a - b, mod) % mod) * (c(a, b) % mod)) % mod << endl;
    return 0;
} // 求结果

寄录

大家肯定都在看春晚

2023/1/21 22:27
加载中...