序列

数列模拟与大数运算
本文介绍了一种使用C++解决数列递推问题的方法,特别关注于处理大数值时的技巧。通过实例演示了如何高效地进行大数运算,并在给定初始条件的情况下计算数列的第99项。

Description
数列A满足An = An-1 + An-2 + An-3, n >= 3

编写程序,给定A0, A1 和 A2, 计算A99
Input
输入包含多行数据

每行数据包含3个整数A0, A1, A2 (0 <= A0, A1, A2 <= 32767)
数据以EOF结束
Output
对于输入的每一行输出A99的值
Sample Input
1 1 1
Sample Output
69087442470169316923566147

看到样例就应该知道是一个大数模拟。想起之前cf一道题上,我还傻乎乎的用了大数模拟,其实long long完全装得下。一看这么多位数,吓得我开了4个long long,然而有的时候后几位开头可能是0,因此需要用printf(“%.10I64d”,a[4]);的姿势。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
long long a[4], b[4], c[4], d[4], temp, pre;
int main()
{
    int i, j, m, n, ans, a0, a1, a2;
    temp = 1;
    for (i = 1; i <= 10; i++)
        temp = temp * 10;
    while (scanf("%d%d%d", &a0, &a1, &a2) != EOF)
    {
        memset(a, 0, sizeof(a));
        memset(b, 0, sizeof(b));
        memset(c, 0, sizeof(c));
        memset(d, 0, sizeof(d));
        d[0] = a0; d[1] = a1; d[2] = a2;
        for (i = 3; i <= 99; i++)
        {
            d[3] = d[0] + d[1] + d[2];
            pre = 0;
            if (d[3] >= temp)
            {
                pre = d[3] / temp;
                d[3] = d[3] - pre* temp;
            }
            c[3] = c[0] + c[1] + c[2] + pre;
            pre = 0;
            if (c[3] >= temp)
            {
                pre = c[3] / temp;
                c[3] = c[3] - pre* temp;
            }
            b[3] = b[1] + b[2] + b[0] + pre;
            pre = 0;
            if (b[3] >= temp)
            {
                pre = b[3] / temp;
                b[3] = b[3] - pre* temp;
            }
            a[3] = a[0] + a[1] + a[2] + pre;
            a[0] = a[1]; b[0] = b[1]; c[0] = c[1]; d[0] = d[1];
            a[1] = a[2]; b[1] = b[2]; c[1] = c[2]; d[1] = d[2];
            a[2] = a[3]; b[2] = b[3]; c[2] = c[3]; d[2] = d[3];
        }
        if (a[3])
        {
            cout << a[3];
            printf("%.10I64d", b[3]);
            printf("%.10I64d", c[3]);
            printf("%.10I64d", d[3]);
            cout << endl;
        }
        else if (b[3])
        {
            cout << b[3];
            printf("%.10I64d", c[3]);
            printf("%.10I64d", d[3]);
            cout << endl;
        }
        else if (c[3])
        {
            cout << c[3];
            printf("%.10I64d", d[3]);
            cout << endl;
        }
        else
            cout << d[3] << endl;

    }

    return 0;
}

看到学长的java简单的通过,心中十万头草泥马……

基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)内容概要:本文档围绕基于遗传算法的异构分布式系统任务调度算法展开研究,重点介绍了一种结合遗传算法的新颖优化方法,并通过Matlab代码实现验证其在复杂调度问题中的有效性。文中还涵盖了多种智能优化算法在生产调度、经济调度、车间调度、无人机路径规划、微电网优化等领域的应用案例,展示了从理论建模到仿真实现的完整流程。此外,文档系统梳理了智能优化、机器学习、路径规划、电力系统管理等多个科研方向的技术体系与实际应用场景,强调“借力”工具与创新思维在科研中的重要性。; 适合人群:具备一定Matlab编程基础,从事智能优化、自动化、电力系统、控制工程等相关领域研究的研究生及科研人员,尤其适合正在开展调度优化、路径规划或算法改进类课题的研究者; 使用场景及目标:①学习遗传算法及其他智能优化算法(如粒子群、蜣螂优化、NSGA等)在任务调度中的设计与实现;②掌握Matlab/Simulink在科研仿真中的综合应用;③获取多领域(如微电网、无人机、车间调度)的算法复现与创新思路; 阅读建议:建议按目录顺序系统浏览,重点关注算法原理与代码实现的对应关系,结合提供的网盘资源下载完整代码进行调试与复现,同时注重从已有案例中提炼可迁移的科研方法与创新路径。
【微电网】【创新点】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究(Matlab代码实现)内容概要:本文提出了一种基于非支配排序的蜣螂优化算法(NSDBO),用于求解微电网多目标优化调度问题。该方法结合非支配排序机制,提升了传统蜣螂优化算法在处理多目标问题时的收敛性和分布性,有效解决了微电网调度中经济成本、碳排放、能源利用率等多个相互冲突目标的优化难题。研究构建了包含风、光、储能等多种分布式能源的微电网模型,并通过Matlab代码实现算法仿真,验证了NSDBO在寻找帕累托最优解集方面的优越性能,相较于其他多目标优化算法表现出更强的搜索能力和稳定性。; 适合人群:具备一定电力系统或优化算法基础,从事新能源、微电网、智能优化等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于微电网能量管理系统的多目标优化调度设计;②作为新型智能优化算法的研究与改进基础,用于解决复杂的多目标工程优化问题;③帮助理解非支配排序机制在进化算法中的集成方法及其在实际系统中的仿真实现。; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注非支配排序、拥挤度计算和蜣螂行为模拟的结合方式,并可通过替换目标函数或系统参数进行扩展实验,以掌握算法的适应性与调参技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值