雪莱的式子武汉2023(分析+快速幂)

传送门:登录—专业IT笔试面试备考平台_牛客网

雪莱的式子武汉2023(分析+快速幂)_第1张图片

 

 思路:

对于每一种质因子,如果他在μ()函数中出现两次,那这种情况对答案贡献为0,所以我们可以只讨论每一种因子出现0,1次的情况。

对于每一个f(n),我们先选择i个质因子在μ()中,有_{i}^{n}\textrm{C}种。

选择i个因子后,我们要确定这i个质因子有哪几种情况可以得到,每个因子可以来自第j次1<=j<=k,对于确定的i个因子有k^{i}种情况。

所以选择i个因子共有:_{i}^{n}\textrm{C}k^{i}种情况。

这些情况对应着同一种结果:(-1)^{i},所以选择i个因子对答案贡献为(-1)^{i}_{i}^{n}\textrm{C}k^{i},1<=i<=n。

答案为\sum_{1}^{n}(-1)^{i}_{i}^{n}\textrm{C}k^{i},我们可以化简成(1-k)^n,快速幂求解;

代码:

#define _CRT_SECURE_NO_WARNINGS 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define LL  long long
const long long  mod =998244353;
const int N = 1e5 + 100;
LL n,k;
LL seek(LL x, LL y)
{
    LL e = 1;
    while (y)
    {
        if (y & 1)
            e = e * x % mod;
        x = x * x %mod;
        y = y >> 1;
    }
    return e;
}
int main()
{
    cin >> n >> k;
    LL ans = 1;
    ans = seek(1-k, n);
    cout << (ans % mod + mod) % mod << endl;
    return 0;
}
 

你可能感兴趣的:(数论,c++,算法)