zoukankan      html  css  js  c++  java
  • 1363-计划日——日期相关的计算

    1363-计划日


    内存限制:256MB 时间限制:3000ms 特判: No
    通过数:152 提交数:406 难度:1

    题目描述:

    为什么花那么多时间、精力还是学不好学不通,如何把握各科目的重难点,期中和期末如何梳理本学期各知识点及内部联系……在孩子学习的过程中,我们该如何帮助孩子快速提高成绩呢?
    打造名校进阶计划,让孩子会学习、会考试,实现名校梦想! 
    Dr. Kong, 作为一名从教多年的老师,跟踪了大量成绩好的学生,发现他们的学习习惯非常规律,有方法、有计划、有目标、有总结。比如:已考上**大学的李明同学,从小学开始订学习计划,达成目标。每经过N天就检查目标是否完成,写总结,并确定下一个学习目标。
    已知李明在YYYY年MM月DD日星期W订了学习计划,现在想看看李明N天后的完成情况和个人总结,你能告诉我那天的日期和星期几吗?

    输入描述:

    第一行: T 表示以下有T组测试数据( 1≤ T  ≤8 )对每组数据, 占一行:
    YYYYMMDD  W  N(20000101≤YYYYMMDD≤20180527  1≤W≤ 7  1 ≤N≤ 8000 )

    输出描述:

    对每组测试数据,输出占一行,格式为:YYYYMMDD  W   ( 中间一个空格 )

    样例输入:

    2
    20180527  7  1                      
    20180214  3  289

    样例输出:

    20180528  1
    20181130  5

    解题思想是,暴力求解,当时需要判别闰平年。闰年判别方法:year%400 == 0 或者 year%100 != 0 && year % 4 == 0.
    代码实现如下:
    package Combat.com;
    
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main
    {
        static int m[] = new int[] {0,31,0,31,30,31,30,31,31,30,31,30,31};
        public static void main(String []args)
        {
            Scanner cin = new Scanner(System.in);
            int T;
            T = cin.nextInt();
            for(int i = 0; i < T; i++)
            {
                int data,w,n;
                data = cin.nextInt();
                w = cin.nextInt();
                n = cin.nextInt();
                int year = data/10000;
                int month = data%10000/100;
                int day = data%100;
                search(year);
                w = (w+n)%7;//判断n天后是星期几
                if(w == 0)
                {
                    w = 7;
                }
                for(int j = 1; j <= n; j++)
                {
                    day++;
                    if(day > m[month])
                    {
                        month++;
                        day = 1;
                    }
                    if(month == 13)
                    {
                        year++;
                        search(year);
                        month = 1;
                    }
                }
                System.out.printf("%4d%02d%02d %d
    ",year,month,day,w);
            }
        }
        static void search(int year)
        {
            if(year%400 == 0 || (year%4 == 0 && year%100 != 0))//判断是否是闰年
            {
                m[2] = 29;
            }
            else
            {
                m[2] = 28;
            }
        }
    }
  • 相关阅读:
    什么样的代码称得上是好代码?
    九年程序人生 总结分享
    Docker入门 第一课 --.Net Core 使用Docker全程记录
    阿里云 Windows Server 2012 r2 部署asp.net mvc网站 平坑之旅
    Visual studio 2015 Community 安装过程中遇到问题的终极解决
    Activiti6.0 spring5 工作流引擎 java SSM流程审批 项目框架
    java 进销存 库存管理 销售报表 商户管理 springmvc SSM crm 项目
    Leetcode名企之路
    24. 两两交换链表中的节点
    21. 合并两个有序链表
  • 原文地址:https://www.cnblogs.com/674001396long/p/10849889.html
Copyright © 2011-2022 走看看