【枚举+推式子】牛客小白月赛 63 E

登录---专业IT笔试面试备考平台_牛客网

题意:

思路:

首先是个计数问题,考虑组合数学

组合数学就是在考虑枚举所有包含1和n的区间

这个典中典就是枚举1和n的位置然后算贡献

双指针超时,考虑推式子:

Code:

cpp 复制代码
#include <bits/stdc++.h>

#define int long long

using i64 = long long;

using namespace std;

constexpr int N = 1e6 + 10;
constexpr int M = 1e6 + 10;
constexpr int mod = 998244353;

int Fac[N];

int qpow(int a, int b) {
    int res = 1ll;
    while(b) {
        if (b & 1) res = res * a % mod;
        a = a * a % mod;
        b >>= 1;
    }
    return res;
}
void solve() {
    int n;
    cin >> n;

    if (n == 1) {
        cout << 1 << "\n";
        return;
    }
    
    Fac[0] = 1;
    for (int i = 1; i <= n; i ++) Fac[i] =  (Fac[i - 1] * i) % mod;
    int ans = 0;
    int inv2 = qpow(2, mod - 2);
    for (int i = 2; i <= n; i ++) {
        ans += (i * (i - 1) % mod * inv2 % mod) % mod * (n - i + 1) % mod;
        ans %= mod;
    }
    cout << (ans * Fac[n - 2] % mod * 2 % mod) % mod << "\n";
}
signed main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int t = 1;
    while(t --) {
        solve();
    }
    return 0;
}
相关推荐
不知名的老吴几秒前
View的三大特性之一:迟绑定
开发语言·c++·算法
小雅痞10 分钟前
[Java][Leetcode hard] 135. 分发糖果
java·算法·leetcode
黎阳之光15 分钟前
黎阳之光:全域实景立体管控,重构智慧电厂与变电站数字孪生新范式
大数据·人工智能·算法·安全·数字孪生
嘻嘻哈哈樱桃18 分钟前
数据流中的中位数 力扣--160
算法·leetcode·职场和发展
老约家的可汗19 分钟前
深入浅出:Map与Set的核心原理与使用场景
数据结构·算法
j_xxx404_25 分钟前
力扣算法题:字符串(最长公共前缀|最长回文子串)
c++·算法·leetcode
承渊政道27 分钟前
【递归、搜索与回溯算法】(穷举vs暴搜vs深搜vs回溯vs剪枝:一文讲清概念与用法)
数据结构·c++·算法·决策树·深度优先·剪枝·宽度优先
承渊政道28 分钟前
【递归、搜索与回溯算法】(综合练习:一网打尽常见题型分类总结与方法归纳)
c++·算法·决策树·分类·深度优先·哈希算法·宽度优先
小江的记录本34 分钟前
【网络安全】《网络安全与数据安全核心知识体系》(包括数据脱敏、数据加密、隐私合规、等保2.0)
java·网络·后端·python·算法·安全·web安全
SimpleLearingAI35 分钟前
ROPE:大模型必学操作
人工智能·算法