zoj 3326 An Awful Problem

本文提供了解答ZOJ 3326 AnAwfulProblem的具体步骤,涉及模拟算法,计算在指定日期范围内能获得的糖的数量。详细分析了日期范围内的月份和日期特性,确保正确处理闰年和特殊月份。

zoj  3326  An Awful Problem                 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3751

模拟水

题目大意:Hiqivenfin母要在prime月prime日给他糖,给出起止日期,求得到糖数。

题目分析:模拟,耐心细心即可~

code:

#include<stdio.h>
int isPrime(int a)
{
    return a==2||a==3||a==5||a==7||a==11||a==13||a==17||a==19||a==23||a==29||a==31?1:0;
}
int nom(int y,int m)
{//number of month
    int n;
    switch(m)
    {
        case 2:n=(y%4==0&&y%100!=0||y%400==0)?10:9;break;
        case 3:
        case 5:
        case 7:n=11;break;
        case 11:n=10;break;
        default:n=0;
    }
    return n;
}
int dom(int y,int m)
{//day of month
    int n;
    switch(m)
    {
        case 2:n=(y%4==0&&y%100!=0||y%400==0)?29:28;break;
        case 3:
        case 5:
        case 7:n=31;break;
        case 11:n=30;break;
        default:n=0;
    }
    return n;
}
int main()
{
    int t,i,j,y1,y2,m1,m2,d1,d2,sum,temp;
    scanf("%d",&t);
    while(t--)
    {
        sum=0;
        scanf("%d%d%d%d%d%d",&y1,&m1,&d1,&y2,&m2,&d2);
        if(y1>=y2)//交换,似乎其实不用
        {
            if(y1>y2)temp=y1,y1=y2,y2=temp,temp=m1,m1=m2,m2=temp,temp=d1,d1=d2,d2=temp;
            else if(m1>=m2)
            {
                if(m1>m2)temp=m1,m1=m2,m2=temp,temp=d1,d1=d2,d2=temp;
                else if(d1>d2)temp=d1,d1=d2,d2=temp;
            }
        }
        if(y1==y2)//一样怎么办
        {
            if(m1==m2)
            {
                if(!isPrime(m1))
                {
                    printf("0\n");
                    continue;
                }
                for(i=d1;i<=d2;i++)
                    sum+=isPrime(i);
                printf("%d\n",sum);
                continue;
            }
            if(isPrime(m1))
                for(i=d1;i<=dom(y1,m1);i++)
                    sum+=isPrime(i);
            for(i=m1+1;i<m2;i++)
                sum+=nom(y1,i);
            if(isPrime(m2))
                for(i=1;i<=d2;i++)
                    sum+=isPrime(i);
            printf("%d\n",sum);
            continue;
        }
        if(isPrime(m1))//原来要精确到天啊,坑B!
            for(i=d1;i<=dom(y1,m1);i++)
                sum+=isPrime(i);//第一年
        for(i=m1+1;i<12;i++)
            sum+=nom(y1,i);
        for(i=y1+1;i<y2;i++)//中间的
            if(i%4==0&&i%100!=0||i%400==0)sum+=53;
            else sum+=52;
        for(i=2;i<m2;i++)
            sum+=nom(y2,i);
        if(isPrime(m2))
            for(i=2;i<=d2;i++)
                sum+=isPrime(i);//最后一年
        printf("%d\n",sum);
    }
    return 0;
}
PS:三wrong而过,悲从中来……




【负荷预测】基于VMD-CNN-LSTM的负荷预测研究(Python代码实现)内容概要:本文介绍了基于变分模态分解(VMD)、卷积神经网络(CNN)和长短期记忆网络(LSTM)相结合的VMD-CNN-LSTM模型在负荷预测中的研究与应用,采用Python代码实现。该方法首先利用VMD对原始负荷数据进行分解,降低序列复杂性并提取不同频率的模态分量;随后通过CNN提取各模态的局部特征;最后由LSTM捕捉时间序列的长期依赖关系,实现高精度的负荷预测。该模型有效提升了预测精度,尤其适用于非平稳、非线性的电力负荷数据,具有较强的鲁棒性和泛化能力。; 适合人群:具备一定Python编程基础和深度学习背景,从事电力系统、能源管理或时间序列预测相关研究的科研人员及工程技术人员,尤其适合研究生、高校教师及电力行业从业者。; 使用场景及目标:①应用于日前、日内及实时负荷预测场景,支持智慧电网调度与能源优化管理;②为研究复合型深度学习模型在非线性时间序列预测中的设计与实现提供参考;③可用于学术复现、课题研究或实际项目开发中提升预测性能。; 阅读建议:建议读者结合提供的Python代码,深入理解VMD信号分解机制、CNN特征提取原理及LSTM时序建模过程,通过实验调试参数(如VMD的分解层数K、惩罚因子α等)优化模型性能,并可进一步拓展至风电、光伏等其他能源预测领域。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值