• 2022百度之星程序设计大赛 - 复赛 1003 最大值


    problem

    在这里插入图片描述

    题目标题-最大值
    现有一个长度为 nn 的序列 a_1,a_2,\cdots,a_na
    1

    ,a
    2

    ,⋯,a
    n

    。记 mx(a)mx(a) 为整个序列 aa 的最大值,即 mx(a)=\max(a_1,a_2,\cdots ,a_n)mx(a)=max(a
    1

    ,a
    2

    ,⋯,a
    n

    )。

    对于一个序列 aa,记其权值 f(a)f(a) 为取得整个序列最大值的位置数量,即 \sum_{i=1}^n[a_i=mx(a)]∑
    i=1
    n

    [a
    i

    =mx(a)]。其中 [A][A] 表示若 AA 为真,则其值为 11,否则为 00。

    度度熊想知道满足以下条件的所有不同序列的权值之和:

    1.序列的长度为 nn。
    2.对于所有的 a_ia
    i

    (1\le i \le n1≤i≤n),满足 a_ia
    i

    为整数,且 1\le a_i\le m1≤a
    i

    ≤m。

    由于答案可能很大,你只需要输出答案对 998244353998244353 取模后的结果。

    格式
    输入格式:
    共一行,两个整数 n,mn,m (1\le n\times m\le10^{12}1≤n×m≤10
    12
    ),意义如上所述。

    输出格式:
    共一行一个整数,表示答案对 998244353998244353 取模后的结果。

    样例 1
    输入:
    4 3
    输出:
    144
    说明:

    solution

    • <1e7时套公式。 n ∑ i = 1 m i n − 1 n\sum_{i=1}^{m}i^{n-1} ni=1min1
    • >1e7时套板子:https://www.cnblogs.com/Pro-king/p/10664390.html
    • 两题无罚时最后一小时前签上道就可以拿到衣服。
    #include
    typedef long long LL;
    #define rep(i,x,y) for(auto i=(x);i<=(y);++i)
    #define F(i,a,b) for (LL i = a; i <= b; i ++)
    #define G(i,a,b) for (LL i = a; i >= b; i --)
    #define IOS ios::sync_with_stdio(0), cin.tie(0),cout.tie(0)
    const LL Mo = 998244353, M = 1e6 + 10;
    const LL mod=998244353;
    using namespace std;
    
    LL pow2(LL a,LL b){LL r=1;while(b){if(b&1)r=r*a%mod;a=a*a%mod;b>>=1;}return r%mod;}
    LL pows(LL a, LL x) { if(x==0)return 1; LL t = pows(a, x>>1); if(x%2==0)return t*t%mod; return t*t%mod*a%mod; }
    LL pows(LL a, LL x, LL p) { if(x==0)return 1; LL t = pows(a, x>>1, p); if(x%2==0)return t*t%p; return t*t%p*a%p; }
    LL exgcd(LL a, LL b, LL &x, LL &y){ if(!b){ x = 1, y = 0; return a; }else{LL r = exgcd(b, a%b, x, y); LL t = x; x = y; y = t-a/b*y; return r; }}
    void exgcd(LL a, LL b, LL &d, LL &x,  LL & y, LL mod) { if (b==0) { d = a; x = 1; y = 0; } else { exgcd(b, a % b, d, y, x, mod); y -= x * (a / b); } }
    LL inv(LL a, LL mod) { LL d=0, x=0, y=0; exgcd(a, mod,  d,  x, y, mod); return d == 1 ? (x + mod) % mod : -1; }
    
    LL l, r, k, m, y[M], z[M], jc[M], suf[M], pre[M];
    bool bz[M];
    
    void Init() {
        y[1] = 1, m = k + 2;
    	F(i, 2, m) {
    		if (!bz[i])
    			z[++ z[0]] = i, y[i] = pows(i, k);
    		F(j, 1, z[0]) {
    			if (z[j] * i > m) break;
    			bz[z[j] * i] = 1;
    			y[z[j] * i] = (1ll * y[z[j]] * y[i]) % Mo;
    			if (i % z[j] == 0) break;
    		}
    	}
    	F(i, 2, m)
    		y[i] = (y[i - 1] + y[i]) % Mo;
    	jc[0] = 1;
    	F(i, 1, m)
    		jc[i] = 1ll * jc[i - 1] * i % Mo;
    	jc[m] = pows(jc[m], Mo - 2);
    	G(i, m - 1, 1)
    		jc[i] = 1ll * jc[i + 1] * (i + 1) % Mo;
    }
    LL Solve(LL n) {
    	pre[0] = suf[m + 1] = 1;
    	F(i, 1, m)
    		pre[i] = 1ll * pre[i - 1] * (n - i) % Mo;
    	G(i, m, 1)
    		suf[i] = 1ll * suf[i + 1] * (n - i) % Mo;
    
    	LL Ans = 0;
    	F(i, 1, m)
    		Ans = (Ans + 1ll * y[i] * pre[i - 1] % Mo * suf[i + 1] % Mo * (((k-i+2)&1) ? (-1) : 1) * jc[i - 1] % Mo * jc[k + 2 - i] % Mo) % Mo;
    	return Ans;
    }
    
    int main() {
        LL nn,mm,ans;  cin>>nn>>mm;
        if(mm<1e7){
            LL x=nn-1;
            rep(i,1,mm)ans=(ans+pow2(i,x))%mod;
            ans=ans*nn%mod;
            cout<<(ans+mod)%mod<<"\n";
            return 0;
        }
        r=mm,k=nn-1;
    	Init();
    	cout<<(Solve(r)*nn%Mo+Mo)%Mo;
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
  • 相关阅读:
    Qt入门(八)——Qt打包(将Qt文件可以在别的Windows系统下运行)
    区块链解决方案-最新全套文件
    浅谈督查督办管理系统在企业管理中起到的作用
    HTTP 协议的定义,工作原理,Fiddler的原理和使用,请求的内容
    谁不是一边升学求职,一边死在路上
    如何提高网站权重
    HTML模板 宽屏大气的企业官网网站模板
    [ 2024春节 Flink打卡 ] -- 理论基础
    Sentinel持久限流化化规则到Nacos
    Clean My Mac X破解版,让您的电脑跟新的一样好用
  • 原文地址:https://blog.csdn.net/qq_33957603/article/details/126909796