loj #6247. 九个太阳

本文介绍了一种利用单位根和二项式定理解决特定数学问题的方法,即求解形如$\sum\limits_{i=1}

$\sum\limits_{i=1}^n [k | i] \times C_n^i$

膜 $998244353$

$n \leq 10^{15},k \leq 2^{20}$

$k$ 是 $2$ 的正整数次方

 

sol:

“不看题解拿头做” 系列

考虑构造一个序列 $a_i$ 满足只有 $[k|i]$ 时是 $1$,其它时候是 $0$

之后就开始神仙了起来

 

构造 $k$ 次单位根 $\omega _k = g^{\frac{p-1}{k}}$,发现 $\frac{1}{k} \times \sum\limits_{j=0}^k \omega _k^{i \times j} = [k | i]$

代入原式得到 $\sum\limits_{i=1}^n \frac{1}{k} \times \sum\limits_{j=0}^k \omega _k^{i \times j} \times C_n^i$

根据二项式定理 $\sum\limits_{i=1}^n C_n^i \times x^i = (x+1)^n$,可以化简

$\frac{1}{k} \times \sum\limits_{j=0}^k (\omega_k ^j + 1)^n$

这就可以直接求了

#include <bits/stdc++.h>
#define LL long long
using namespace std;
#define rep(i, s, t) for (register int i = (s), i##end = (t); i <= i##end; ++i)
#define dwn(i, s, t) for (register int i = (s), i##end = (t); i >= i##end; --i)
inline LL read() {
    LL x = 0, f = 1; char ch = getchar();
    for (; !isdigit(ch); ch = getchar())if (ch == '-')f = -f;
    for (; isdigit(ch); ch = getchar()) x = 10 * x + ch - '0';
    return x * f;
}
const int mod = 998244353;
inline int ksm(int x, int t) {
    int res = 1;
    for(; t; x = 1LL * x * x % mod, t = t >> 1) if(t & 1) res = 1LL * x * res % mod;
    return res;
}
int main() {
    LL n = read() % (mod-1), k = read();
    int ans = 0;
    int wn = ksm(3, (mod-1) / k), w = ksm(3, (mod-1) / k);
    rep(i, 0, k-1) {
        (ans += ksm(w + 1, n)) %= mod;
        w = 1LL * w * wn % mod;
    }
    ans = 1LL * ans * ksm(k, mod - 2) % mod;
    cout << ans << endl;
}
View Code

 

转载于:https://www.cnblogs.com/Kong-Ruo/p/10491026.html

内容概要:本文介绍了一种基于双层优化的微电网系统规划设计方法,旨在通过Matlab代码实现,解决微电网在规划与运行中的多目标、多层次决策问题。该方法将优化过程分为上下两层:上层通常负责容量配置、设备选址等长期规划决策,下层则聚焦于能量管理、出力调度等短期运行优化,通过迭代交互实现全局最优。文中详细阐述了模型构建、约束条件设定、目标函数设计及求解算法实现流程,并提供了完整的Matlab代码供复现实验,有助于深入理解微电网系统的设计逻辑与优化机制。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事新能源、微电网、综合能源系统等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 学习和掌握双层优化理论在微电网规划设计中的具体应用;② 通过阅读和运行Matlab代码,复现并改进经典优化模型,用于学位论文、科研项目或实际工程方案设计;③ 深入理解微电网中分布式能源、储能与负荷的协同优化调度策略。; 阅读建议:此资源以Matlab代码实现为核心,强调理论与实践的结合。建议读者先理解双层优化的基本思想和数学模型,再结合代码逐行分析,重点关注变量定义、约束条件的代码转化以及主从问题间的迭代逻辑。鼓励在提供的代码基础上进行参数调整、场景扩展或算法改进,以深化学习效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值