从拾ACM——poj1006解题报告

本文深入探讨了中国剩余定理的应用,通过一道经典题目,将古老的数学问题与现代编程结合,展示了如何利用该定理解决周期同步问题,并提供了详细的算法解析及代码实现。

警告:这不是一道水题

 

说真的,连着刷了5道水题,突然间碰到这道题还真的有点不适应。。。。

 

题目大意:

有三个循环周期:23,28,33。

先给你这三个周期距离下一次峰值的天数:p,e,i

再给你一个起始日期:d

求:从d天后再过多少天三个周期能同时达到峰值?

 

有木有乍一看很简单,细想想却又无从下手的赶脚?

 

抛开这道题,我们先研究一个很古老却又很深奥的问题:中国剩余定理

《孙子算经》中有“物不知数”问题:“今有物不知其数,三三数之余二 ,五五数之余三 ,七七数之余二,问物几何?”

翻译一下就是n % 3 = 2, n % 5 = 3, n % 7 = 2; 问n是多少?

 

再回过头来看题,假设n天后三个周期能同时达到峰值。是不是能够得到:

(n+d) % 23 = p;

(n+d) % 28 = e;

(n+d) % 33 = i;

 

看看看,是不是一毛一样!

好了,现在该研究研究怎么求这个n了。。。

 

现在的已知条件只有n % 3 = 2, n % 5 = 3, n % 7 = 2。

我们拆开来看这三个条件,假设有3个数n1,n2,n3

使得n1能够整除5跟7,但是n1%3=2

使得n2能够整除3跟7,但是n2%5=3

使得n3能够整除3跟5,但是n3%7=2

是不是(n1+n2+n3) % 3 = 2, (n1+n2+n3) % 5 = 3, (n1+n2+n3) % 7 = 2就成立了!

 

好了,接下来我们在看看n1,n2,n3该怎么求

假设a能够整除5跟7,a%3=1。那么a*2 % 3=2成立

假设b能够整除3跟7,b%7=1。那么b*3 % 5=3成立

假设c能够整除3跟5,c%7=1。那么c*2 % 7=2成立

 

所以:a=70,b=21,c=15

所以:n1=140,n2=63,n3=30

所以:n=233!

但是233明显不是最优解;

n=233 % 105(3,5,7的最小公倍数)=23

bingo!

 

再回过头来看poj1006,求这里面的a,b,c

a=5544

b=14421

c=1288

day = (5544 * p + 14421 * e + 1288 * i - d + 21252) % 21252;

 

代码如下:

#include <iostream>

using namespace std;

int main(){
    int p, e, i, d, day, num = 1;

    while (cin >> p >> e >> i >> d && p != -1 && e != -1 && i != -1 && d != -1){
        day = (5544 * p + 14421 * e + 1288 * i - d + 21252) % 21252;
        cout << "Case "<< num << ": the next triple peak occurs in " << ((day == 0) ? 21252 : day) << " days." << endl;
        num++;
    }
    return 0;
}

 

【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值