首页 > 其他分享 >LGP1313 题解

LGP1313 题解

时间:2024-09-26 21:12:24浏览次数:1  
标签:return LGP1313 int 题解 inv choose fact MOD

考察二项式定理的基本应用。

正解

发现存在式子 \((ax+by)^k\),容易想到二项式定理。

二项式定理:

\[(x+y)^n=\sum\limits_{i=0}^{n}{n\choose i}x^iy^{n-i} \]

令 \(p=ax,q=by\),那么原式变为 \((p+q)^k\)。

那么此时 \(p^n\times q^m\) 的系数为 \({k\choose n}\)。

这一项即为:

\[{k\choose n}p^nq^m=\left({k\choose n}a^nb^m\right)x^ny^m \]

综上,系数就是 \({k\choose n}a^nb^m\)。

\({k\choose n}\) 有很多种方法求解,这里使用公式法

代码

#include <bits/stdc++.h>
#define int long long
const int MOD = 10007;
const int N = 1e3 + 10;

int a, b, k, n, m, fact[N], inv_fact[N];

int qpow(int a, int b) {
  int ans = 1;
  a %= MOD;
  for (; b; b >>= 1) {
    if (b & 1) (ans *= a) %= MOD;
    (a *= a) %= MOD;
  }
  return ans;
}

void init() { // 预处理
  fact[0] = inv_fact[0] = 1;
  for (int i = 1; i <= k; ++i) {
    fact[i] = fact[i - 1] * i % MOD;
    inv_fact[i] = inv_fact[i - 1] * qpow(i, MOD - 2) % MOD;
  }
}

int C(int n, int m) {
  if (m > n) return 0;
  if (m == n) return 1;
  return fact[n] * inv_fact[m] % MOD * inv_fact[n - m] % MOD;
}

signed main() {
  std::cin >> a >> b >> k >> n >> m, init();
  std::cout << C(k, n) * qpow(a, n) % MOD * qpow(b, m) % MOD << std::endl;
  return 0;
}

标签:return,LGP1313,int,题解,inv,choose,fact,MOD
From: https://www.cnblogs.com/oier-wst/p/18434388/luogu-P1313-solution

相关文章

  • LGB3717 题解
    原题链接:B3717组合数问题。难度:Easy组合数学的模板题。排除做法:\(n,m\le5\times10^6\),显然不能使用杨辉三角递推。模数为\(998,244,353\),无法使用\(\text{Lucas}\)定理。正解考虑直接使用组合数的计算式:\[{n\choosem}=\dfrac{n!}{m!(n-m)!}\]其中\(n!\)可......
  • P8908 [USACO22DEC] Palindromes P 题解
    P8908[USACO22DEC]PalindromesP题解算是好题,虽然没什么人做(简单地,我们考虑如何将一个字符串改变为回文串。显然如果我们判定所有\(\texttt{G}\)组成的是回文串,那么整个串一定是回文的。于是我们只考虑改变\(\texttt{G}\)的位置。那么由这类题的套路不难知道最优的变换......
  • 【洛谷】P1168 中位数 的题解
    【洛谷】P1168中位数的题解题目传送门题解不懂就问,这是什么标签啊,《线段树》《二分》《堆》《树状数组》qaq谔谔,教练讲的这是一题线段树,看半天看不出来,也不会做,只好去看题解。其他的题解讲什么主席树,平衡树,分块,结果看完第一篇人都傻了。什么东西嘛qaq(恼vector直接一......
  • CF1063E Lasers and Mirrors题解
    一道很好的手玩题,被薄纱了。首先判掉\(\foralli,p_i=i\)的情况(显然是\(n\))然后考虑按照\(p_i\)连边,先构造每一个环的方案。发现可以简单放置两面镜子使得\(i\)射到\(p_i\),而且只要从高到底构造,一定不会产生影响。但是每一个环的最后一个点很特殊,因为第1个点下面放置了让第1个......
  • LOJ 6241. 性能优化 I 题解
    题给代码意为\[\begin{align*}&\sum\limits_{i=1}^n\sum\limits_{j=1}^{\lfloor\fracni\rfloor}\sum\limits_{k=1}^j[\gcd(j,k)=1]\\=&\sum\limits_{i=1}^n\sum\limits_{j=1}^{\lfloor\fracni\rfloor}\varphi(j)\\......
  • P8475 「GLR-R3」雨水 题解
    关于这道题目卡\(O(n\logn)\)但是放\(O(n^2)\)我也是很疑惑。我们发现,题目要求的是字典序最小的序列。但凡涉及了字典序最小,答案或多或少的都会带点贪心思想。那我们也来贪一贪。考虑当前枚举到第\(i\)个点,如果后面有比它更小的数,那显然把它们交换过来是更优的。如果有多......
  • P8474 「GLR-R3」立春 题解
    俗话说的好:“打表出奇迹”,所以我们这一题打表计算。其实确实可以打表来找规律。通过打表,我们可以获得如下的结果:1 12 33 214 3155 9765…… ……然后观察可得:\[1\times3=1\times(2^2-1)=3\]\[3\times7=3\times(2^3-1)=21\]\[21\times15=21\t......
  • Codeforces Round 971 (Div. 4)题解记录(G3待补)
    A.Minimize!暴力模拟一遍即可#include<iostream>#include<queue>#include<deque>#include<map>#include<set>#include<stack>#include<vector>#include<bitset>#include<math.h>#include<random>#include&l......
  • P8563 Magenta Potion 题解
    前排警告这是较为通用,不需要脑子,但是代码量巨大的题解,请谨慎食用解题思路不知道大家做没做过带修改的区间最大连续子段和,这一题其实就是带修改的区间最大连续子段积。那么其实做法是类似的。我们用线段树维护五个量:当前区间答案,区间前缀最小值,区间前缀最大值,区间后缀最小值,区......
  • P8564 ρars/ey 题解
    显然树上背包。首先一眼会想到的状态:\(dp_{i,j}\)表示\(i\)的子树最后剩下\(j\)个结点的最小代价。然而开始写会发现这并不好DP。于是我们换一个想法:\(dp_{i,j}\)表示\(i\)的子树删去\(j\)个结点的最小代价。则有转移方程:\[dp_{i,j}=\min_{v\inson(i)}\{dp_{i......