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
  • 相关阅读:
    Running APP 使用说明
    Android 控件八 WebView 控件
    Android 控件七 ImageView 控件
    Android 控件六 CheckBox 控件
    Android 控件五 RadioButton 控件
    Android 控件四 EditText 控件
    Android 控件三 TextView 控件实现 Button
    Android 控件二 Button
    Android 基础控件演示实例
    Android 控件一 TextView
  • 原文地址:https://www.cnblogs.com/xiaxiaosheng/p/3569947.html
Copyright © 2011-2022 走看看