• NOJ1008-第几天


    第几天

    时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
    总提交 : 2701            测试通过 : 800 

    比赛描述

    在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。例如:1700, 1800, 1900 和 2100不是闰年,而 1600, 2000 和 2400是闰年。

    给定公元2000年1月1日后的某年某月某日(包括2000年1月1日),你的任务:(1)给出这一天从公元2000年1月1日开始逝去的天数,(2)判断这一天是当年的第几天。


    输入

     

    输入包含若干行,每行包含三个空格间隔的正整数,它们分别表示年、月、日。输入最后一行是−1, 不必处理。可以假设结果的年份不会超过9999。

    输出

     

    多组,每组两行,分别为每行输入所代表的一天从公元2000年1月1日开始逝去的天数、在当年的第几天。

    样例输入

    2000 1 1
    2009 3 14
    -1

    样例输出

    0
    1
    3360
    73

     

    题目来源

    NUPT

     

    思路:一道简单的日期计算问题,除了考虑闰年还有题目中说“从公元2000年1月1日开始逝去的天数”,所以2000.1.1这天就不算了,最后count要减去1

     

     1 #include <cstdio>
     2 
     3 int m[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
     4 
     5 bool Judge( int year ) {
     6     if( year % 400 == 0 || ( year % 4 == 0 && year % 100 != 0 ) ) {
     7         return true;
     8     }
     9     return false;
    10 }
    11 
    12 int main() {
    13     int year, month, day;
    14     while( 1 ) {
    15         scanf( "%d", &year );
    16         if( year == -1 ) {
    17             break;
    18         }
    19         else {
    20             int count = 0;//从2000.1.1开始总的天数 
    21             int sum = 0;//当年总的天数 
    22             scanf( "%d%d", &month, &day );
    23             if( Judge( year ) ) {
    24                 m[2] = 29;
    25             }
    26             else {
    27                 m[2] = 28;
    28             }
    29             for( int i = 1; i < month; i++ ) {
    30                 sum += m[i];
    31             }
    32             sum += day;
    33             for( int i = 2000; i < year; i++ ) {
    34                 if( Judge( i ) ) {
    35                     count += 366;
    36                 }
    37                 else {
    38                     count += 365;
    39                 }
    40             }
    41             count += sum;
    42             count -= 1;//2000.1.1这天不计算 
    43             printf( "%d
    %d
    ", count, sum );
    44         }
    45     }
    46     return 0;
    47 }

     

     

     

  • 相关阅读:
    用一个测试类简化排序算法时间复杂度的研究
    用斗地主的实例学会使用java Collections工具类
    数据结构:用实例分析ArrayList与LinkedList的读写性能
    用一个通俗易懂的例子彻底说清楚单例模式
    用自定义链式栈解决力扣括号匹配问题
    数据结构之链式队列的代码实现及有趣应用
    用非常硬核的JAVA序列化手段实现对象流的持久化保存
    SpringBoot整合SpringSecurity实现JWT认证
    六百字搞懂lambda
    判空我推荐StringUtils.isBlank
  • 原文地址:https://www.cnblogs.com/lzjtdxfxl/p/5374575.html
Copyright © 2020-2023  润新知