zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 52E(构造,快速幂)

    #include <bits/stdc++.h>
    using namespace std;
    const int mod=998244353;
    long long b[200007];
    long long ksm(long long x,long long y){//快速幂
        long long ans=1;
        while(x){
            if(x&1)
                ans=ans*y%mod;
            y=y*y%mod;
            x>>=1;
        }
        return ans;
    }
    int main(){
        long long n,m,a;
        scanf("%lld%lld%lld",&n,&m,&a);
        long long ans=1;
        for(int i=1;i<=m;i++){
            scanf("%lld",&b[i]);
            long long c=ksm(b[i]-b[i-1],a);//多出来的部分进行排列组合
            ans=c*(c+1)/2%mod*ans%mod;//左右各多余部分的a次方,即x^2a,减去左右倒置后相同,即与一边的组合情况数量相等,即x^a,除以二得到交换后相同的数量再加上之前被减去的左右镜像的x^a种得到答案
        }
        ans=ans*ksm(n-2*b[m],a)%mod;//快速幂乘上还未组合过的
        printf("%lld ",ans);
        return 0;
    }

    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    516. 最长回文子序列
    NC50493 环形石子合并
    NC16650 采药
    NC16664 合唱队形
    NC51170 石子合并
    148. 合并果子
    NC25138 子串查询
    二维数组对角线 的 规律
    如何讲一个网页转换为jpg?(图片!)
    Java两倍 犯错题
  • 原文地址:https://www.cnblogs.com/ldudxy/p/9825222.html
Copyright © 2011-2022 走看看