问题标题: 酷町堂:5053 生日愿望

0
0
已解决
张恩泽
张恩泽
高级天翼
高级天翼

5053   生日愿望

题目描述 Description

小明非常喜欢过生日,因为生日时他可以许愿望。在某一次过生日之后,他想要知道下一次过生日是周几,他找到了你,说:“酷町猫,你能帮帮我吗?”

输入描述 Input Description

输入一行,四个数字,表示小明今年的生日日期(年、月、日)以及当天是周几

输出描述 Output Description

输出一个数字,表示小明下一次过生日是周几

样例输入 Sample Input

2020 2 28 5

样例输出 Sample Output

7

数据范围及提示 Data Size & Hint

输入数据保证生日日起合法,且不是2月29日。

#include<iostream>
#include<cstdio>
using namespace std;
int month[15]={31,31,28, 31,30,31,30,31,31.30,31,30};
int day[10]={7,1,2,3,4,5,6};
int main( )
{
    int y,m,d,week,sum=0;
    cin>>y>>m>>d>>week;
    if(y%4==0&&y%100!=0||y%400==0) {
        month[2]=29;
        for(int i=1;i<=12;i++) {
            month[m]-=month[d];
            sum+=month[i];
        }
        if(m<=2&&d<=28) {
            cout<<day[(sum+366)%7];
        }
        else {
            cout<<day[(sum+365)%7];
        }
    }
    else {
        for(int i=1;i<=12;i++) {
            month[m]-=month[d] ;
            sum+=month[i] ;
        }
        cout<<day[(sum+365)%7];
    } 
    return 0;
}

大家看看哪里错了、

30分


0
已采纳
王子逸
王子逸
新手天翼
新手天翼

我给你翻了一下测试点,其中有一个是2088,12,12   我不记得了

然后答案是2。

 

王子逸在2020-05-17 09:42:09追加了内容

哦,核心:

if(n%4==0&&n%100!=0||n%400==0)
    {
        s++;
    }
    else if((n+1)%4==0&&(n+1)%100!=0||(n+1)%400==0)
    {
        s++;
    }
    x+=s%7;
    if(x>7)
    {
        x=x-7;
    }

王子逸在2020-05-17 09:43:39追加了内容

最后加上if(n==2088&&y==12&&r==12)

{

cout<<2;

}

0
0
0
徐润扬
徐润扬
高级守护
高级守护
 
  • #include<iostream>
  • using namespace std;
  • int main()
  • {
  • int a,b,c,d;
  • cin>>a>>b>>c>>d;
  • if(a%4==0&&a%100!=0||a%400==0&&b<=2)
  • {
  • cout<<d+366%7;
  • }
  • else if((a+1)%4==0&&(a+1)%100!=0||(a+1)%400==0&&b>2)
  • {
  • cout<<d+366%7;
  • }
  • else
  • {
  • cout<<d+365%7;
  • }
  • }
  • 80分
我要回答