2956: 模积和 乘法逆元 取模

本文解析了一道BZOJ题目,并提供了一份详细的代码实现。通过使用longlong类型避免了数据处理中的类型转换问题,针对不同的计算需求,设计了多个辅助函数进行模块化处理,有效解决了大数据场景下的计算难题。

建议直接开long long,否则各种强制转换类型可能会出问题。。我因为这调了好久,小数据拍的飞起大数据各种跪。。
公式见hzwer
bzoj题目描述坑。。其实还是挺简单的,分开计算就好了。。

#include<iostream>
#include<cstdio>
#define ll long long
#define p 19940417
#define ine2 9970209
#define ine6 3323403
using namespace std;
ll n,m;
ll calc(ll k,ll n)
{
    ll tmp=0;
    for (ll i=1,pos=0;i<=k;i=pos+1)
    {
        pos=min(n/(n/i),k);
        (tmp+=(n/i)%p*(((pos+1)*(pos)%p*ine2%p-(i-1)*i%p*ine2%p+p)%p)%p)%=p;
    }
    return (tmp+p)%p;
}
ll calc0(ll n,ll m)
{
    ll tmp=0;
    for (ll i=1,pos=0;i<=n;i=pos+1)
    {
        pos=min(n/(n/i),m/(m/i));
        (tmp+=(n/i)*(m/i)%p*((pos*(pos+1)%p*(pos*2+1)%p*ine6%p-(i-1)*i%p*(i*2-1)%p*ine6%p+p)%p)%p)%=p;
    }
    return (tmp+p)%p;
}
int main()
{
    scanf("%lld%lld",&n,&m);
    if (n>m) swap(n,m);
    ll t1=calc(n,n),t2=calc(m,m),t3=calc(n,m),t4=calc0(n,m);
    ll ans=((((ll)n*n%p-t1+p)%p)*(((ll)m*m%p-t2+p)%p)%p-((ll)n*n%p*m%p-(ll)t1*m%p-(ll)t3*n%p+t4%p+p*10)%p+p)%p;
    cout << ans << endl;
    return 0;
}
考虑柔性负荷的综合能源系统低碳经济优化调度【考虑碳交易机制】(Matlab代码实现)内容概要:本文围绕“考虑柔性负荷的综合能源系统低碳经济优化调度”展开,重点研究在碳交易机制下如何实现综合能源系统的低碳化与经济性协同优化。通过构建包含风电、光伏、储能、柔性负荷等多种能源形式的系统型,结合碳交易成本与能源调度成本,提出优化调度策略,以降低碳排放并提升系统运行经济性。文中采用Matlab进行仿真代码实现,验证了所提型在平衡能源供需、平抑可再生能源波动、引导柔性负荷参与调度等方面的有效性,为低碳能源系统的设计与运行提供了技术支撑。; 适合人群:具备一定电力系统、能源系统背景,熟悉Matlab编程,从事能源优化、低碳调度、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究碳交易机制对综合能源系统调度决策的影响;②实现柔性负荷在削峰填谷、促进可再生能源消纳中的作用;③掌握基于Matlab的能源系统建与优化求解方法;④为实际综合能源项目提供低碳经济调度方案参考。; 阅读建议:建议读者结合Matlab代码深入理解型构建与求解过程,重点关注目标函数设计、约束条件设置及碳交易成本的量化方式,可进一步扩展至多能互补、需求响应等场景进行二次开发与仿真验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值