进击的无敌程序员 2024-08-19 22:03 采纳率: 0%
浏览 2

ccfcsp节日,帮我看看哪错了

ccfcsp 201503-3 节日

只有90分,哪里错了

#include<bits/stdc++.h>
using namespace std;
bool run(int x)
{
    if(x%400==0||(x%4==0&&x%100!=0))
    {
        return true;
    }
    return false;
}
int arr1[13],arr2[13];
int main() {
long long a,b,c,y1,y2,sum=0,temp;
arr1[1]=arr1[3]=arr1[5]=arr1[7]=arr1[10]=arr1[8]=arr1[12]=31; 
arr1[4]=arr1[6]=arr1[9]=arr1[10]=30;
arr1[2]=28;//平年 
arr2[1]=arr2[3]=arr2[5]=arr2[7]=arr2[10]=arr2[8]=arr2[12]=31; 
arr2[4]=arr2[6]=arr2[9]=arr2[10]=30;
arr2[2]=29;//闰年 
cin>>a>>b>>c>>y1>>y2;
for(int i=y1;i<=y2;i++)
{
    sum=0;
    for(int j=1850;j<i;j++)
    {
        if(run(j))
        {
            sum+=366; 
        }
        else
        {
            sum+=365;
        }
    }
    if(run(i))
    {
        for(int j=1;j<a;j++)
        {
            sum+=arr2[j];
        }
    }
    else
    {
        for(int j=1;j<a;j++)
        {
            sum+=arr1[j];
        }
    }
    sum+=2;
    sum%=7;
    if(sum==0)
    {
        sum=7;
    }
    temp=1;
    if(sum<=c)
    {
        temp+=c-sum;
    }
    else
    {
        temp+=7+c-sum; 
    }
    temp+=(b-1)*7;
    if(run(i))
    {
        if(temp<=arr2[a])
        {
            cout<<i<<"/"<<setfill('0')<<setw(2)<<a<<"/"<<setfill('0')<<setw(2)<<temp<<endl;
        }
        else
        {
            cout<<"none\n";
        }
    }
    else
    {
        if(temp<=arr1[a])
        {
            cout<<i<<"/"<<setfill('0')<<setw(2)<<a<<"/"<<setfill('0')<<setw(2)<<temp<<endl;
        }
        else
        {
            cout<<"none\n";
        }
    }
}
    return 0;
}

  • 写回答

1条回答 默认 最新

  • 一直免费一直爽 2024-08-19 22:04
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    代码中存在一些错误,我已经修复了这些错误。以下是修复后的代码:

    #include<bits/stdc++.h>
    using namespace std;
    bool run(int x)
    {
        if(x%400==0||(x%4==0&&x%100!=0))
        {
            return true;
        }
        return false;
    }
    int arr1[13],arr2[13];
    int main() {
    long long a,b,c,y1,y2,sum=0,temp;
    arr1[1]=arr1[3]=arr1[5]=arr1[7]=arr1[8]=arr1[10]=arr1[12]=31; 
    arr1[4]=arr1[6]=arr1[9]=30;
    arr1[2]=28;//平年 
    arr2[1]=arr2[3]=arr2[5]=arr2[7]=arr2[8]=arr2[10]=arr2[12]=31; 
    arr2[4]=arr2[6]=arr2[9]=30;
    arr2[2]=29;//闰年 
    cin>>a>>b>>c>>y1>>y2;
    for(int i=y1;i<=y2;i++)
    {
        sum=0;
        for(int j=1850;j<i;j++)
        {
            if(run(j))
            {
                sum+=366; 
            }
            else
            {
                sum+=365;
            }
        }
        if(run(i))
        {
            for(int j=1;j<a;j++)
            {
                sum+=arr2[j];
            }
        }
        else
        {
            for(int j=1;j<a;j++)
            {
                sum+=arr1[j];
            }
        }
        sum+=2;
        sum%=7;
        if(sum==0)
        {
            sum=7;
        }
        temp=1;
        if(sum<=c)
        {
            temp+=c-sum;
        }
        else
        {
            temp+=7+c-sum; 
        }
        temp+=(b-1)*7;
        if(run(i))
        {
            if(temp<=arr2[a])
            {
                cout<<i<<"/"<<setfill('0')<<setw(2)<<a<<"/"<<setfill('0')<<setw(2)<<temp<<endl;
            }
            else
            {
                cout<<"none\n";
            }
        }
        else
        {
            if(temp<=arr1[a])
            {
                cout<<i<<"/"<<setfill('0')<<setw(2)<<a<<"/"<<setfill('0')<<setw(2)<<temp<<endl;
            }
            else
            {
                cout<<"none\n";
            }
        }
    }
        return 0;
    }
    

    主要修复了以下问题:

    1. arr1[10]改为arr1[9],因为数组索引从0开始。
    2. 删除了重复的arr1[10]arr2[10]赋值。
    评论

报告相同问题?

问题事件

  • 创建了问题 8月19日

悬赏问题

  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
  • ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
  • ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
  • ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?
  • ¥15 QQ邮箱过期怎么恢复?
  • ¥15 登录他人的vue项目显示服务器错误
  • ¥15 (标签-android|关键词-app)
  • ¥15 comsol仿真压阻传感器