茶慕丝稚的双日节

时间: 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;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。