茶慕丝稚的双日节
时间: 1ms 内存:128M
描述:
自从上次茶慕丝稚网购了两个iphoneX后,他开始了喜欢起双日节了,每逢双日节,茶慕丝稚都会在网上购买两个相同的物品。什么是双日节呢?茶慕丝稚说,只要月和日相同就是双日节,比如1月1日,2月2日,3月3日,...,这样算下来,1年有12个双日节。茶慕丝稚自从上次撸铁疲劳过度,什么事也不愿做,但是双日节他是不希望错过的,因为可以网购。茶慕丝稚希望你能提醒他下一个双日还有几天。
输入:
今天的日期
输出:
距下一个双日节的天数。如果今年没有下一个双日节了,则自动转到下一年。
示例输入:
2018 11 30
示例输出:
12
提示:
参考答案(内存最优[1120]):
#include<stdio.h>
int main()
{
int year,month,day;
int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d %d %d",&year,&month,&day);
if(year%4==0&&year%100!=0||year%400==0)days[2]++;
if(day>=month){
printf("%d",days[month]-day+(month%12+1));
}else{
printf("%d\n",month-day);
}
return 0;
}
参考答案(时间最优[1]):
#include<stdio.h>
int isyear(int n)
{
if(n%4==0 && n % 100!=0 || n % 400==0)
return 1;
return 0;
}
int main()
{
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int year,month,day;
int res;
scanf("%d %d %d",&year,&month,&day);
if(day < month)
{
res = month - day;
printf("%d",res);
return 0;
}
res = a[month-1]-day;
if(month==2 && isyear(year))res++;
if(month!=12)res += (month + 1);
else res++;
printf("%d",res);
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。