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