zoukankan      html  css  js  c++  java
  • 解题报告 纪念日

     

    1.        题目

    纪念日(Date.pas/c/cpp

    题目描述

        新兵入队的日子YYMMDD日,他们觉得这个日子特别有意义,所以决定过n天搞一次活动来纪念这个日子,可是他们不知道n天后是什么日子,所以请你帮忙计算一下日期(入队日算第0天)。

     

    输入数据

         文件第一行读入n    (0<=n<=50000)

    从文件的第二行分别读入YYMMDD其中1949<=YY<=1992,日期绝对合法。

     

    输出数据

        输出文件只有一行,即CCC老师生日第一万天以后的日期,格式为 “Y-M-D”

     

    样例输入

    10000

    1979 4 16

     

    样例输出

        2006-9-1

     

    2.        题目实质

    模拟,日期的计算。

    3.        算法

    模拟。这个要用真正的模拟来做,一天天的往下数,反正只有几万天,不会超时。

    事实上,对于日期类模拟来说,这无疑是最简单最有效的方法。

    如果有兴致,当然也可以按照数学方法来一块时间一块时间的算,错了后果自负。

    4.        注意事项

    只要判断一下,这个只不过是一个进制有点变态的进位加法。

    5.        程序代码

    SueMiller Pascal

    const mon:array[1..12]of integer=(31,28,31,30,31,30,

                                      31,31,30,31,30,31);

    var n:longint;

        yy,mm,dd:longint;

        p:longint;

    function check(y:longint):boolean;

    begin

      if ((y mod 4=0) and (y mod 100<>0)) or(y mod 400=0) then exit(true);

      exit(false);

    end;

    begin

      assign(input,'Date.in');reset(input);

      assign(output,'Date.out');rewrite(output);

      readln(n);

      readln(yy,mm,dd);

      while n>0 do

        begin

          p:=mon[mm];

          if (mm=2) and (check(yy)) then inc(p);

          inc(dd);dec(n);

          if dd>p then begin dd:=1;inc(mm);end;

          if mm>12 then begin inc(yy);mm:=1;end;

        end;

      writeln(yy,'-',mm,'-',dd);

      close(input);close(output);

    end.

  • 相关阅读:
    C#中int和System.Int32理解总结
    谈C#中的Delegate
    Html的安全隐患
    Oracle性能优化
    Selenium私房菜系列7 深入了解Selenium RC工作原理(2)
    java取整和java四舍五入方法
    Android SufaceView 背景设置透明
    android图片加水印,文字
    关于android集成开发环境引入jar包错误的问题
    android bitmap绘制文字自动换行
  • 原文地址:https://www.cnblogs.com/SueMiller/p/2129994.html
Copyright © 2011-2022 走看看