zoukankan      html  css  js  c++  java
  • HDU 1308 What Day Is It?(模拟题)

    解题报告:输入一个年月日,让你求出那一天是星期几,但是做这题之前必须先了解一点历史。首先在1582年之前,判断是否是闰年的标准是只要能被四整除就是闰年,

    然后在1752年9月2号的后的11天被抹去了,也就是说1752年9月2号的第二天不是9月3号,而是9月14号。然后知道这些这题就好做了,我的做法是把1年1月1号作为

    参考日,那天是星期天,然后计算输入的日子与那天差多少天就可以判断出输入的日子是星期几了。

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    
    int m[2][13] = {
    {0,31,28,31,30,31,30,31,31,30,31,30,31},
    {0,31,29,31,30,31,30,31,31,30,31,30,31},
    };
    char xingqi[8][20] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
    char yue[13][20] = {"","January","February","March","April","May","June","July","August","September","October","November","December"};
    
    int judge(int year)   //判断是否为润年
    {
        if(year > 1582)
        return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
        else return year % 4 == 0;
    }
    
    int num_day(int mon,int day,int year)      //以公元1年1月1日为参考点,求到输入的日期为止已经过去的天数
    {
        int tot = 0;
        for(int i = 1;i < year;++i)
        tot += (judge(i)? 366:365);
        for(int i = 1;i < mon;++i)
        tot += m[judge(year)][i];
        tot += day;
        return tot;
    }
    int panduan(int mon,int day,int year)   //判断输入的日期是否合法
    {
        if(mon <= 0 || day <= 0 || year <= 0)
        return 0;
        if(mon > 12)
        return 0;
        if(day > m[judge(year)][mon])
        return 0;
        return 1;
    }
    
    int main()
    {
        int day,mon,year;
        while(scanf("%d%d%d",&mon,&day,&year))
        {
            if(day == mon && mon == year && year == 0)
            break;
            int tot_d = num_day(mon,day,year);
            if(tot_d > 639798)
            tot_d -= 11;
            tot_d -= 1;
            if(panduan(mon,day,year))
            printf("%s %d, %d is a %s
    ",yue[mon],day,year,xingqi[tot_d % 7]);
            else printf("%d/%d/%d is an invalid date.
    ",mon,day,year);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    《老男孩》
    java中四种阶乘的计算
    DataOutputStream的乱码问题
    java中飞clone方法
    类反射的简单例子
    PHP: 如何连接oracle数据库进行数据读取
    .NET : 如何读取图片中的元数据信息
    重新审视REST
    PHP 的历史
    Image File Format Specifications {转载}
  • 原文地址:https://www.cnblogs.com/xiaxiaosheng/p/3569947.html
Copyright © 2011-2022 走看看