zoukankan      html  css  js  c++  java
  • 【NOI OJ】18 Tomorrow never knows?(未知的明天)

    18:Tomorrow never knows?


    总时间限制: 
    1000ms 
    内存限制: 
    65536kB
    描述

    甲壳虫的《A day in the life》和《Tomorrow never knows》脍炙人口,如果告诉你a day in the life,真的会是tomorrow never knows?相信学了计概之后这个不会是难题,现在就来实现吧。

    读入一个格式为yyyy-mm-dd的日期(即年-月-日),输出这个日期下一天的日期。可以假定输入的日期不早于1600-01-01,也不晚于2999-12-30。

    输入
    输入仅一行,格式为yyyy-mm-dd的日期。
    输出
    输出也仅一行,格式为yyyy-mm-dd的日期
    样例输入
    2010-07-05
    样例输出
    2010-07-06
    提示
    闰年的标准:
    (1)普通年能被4整除且不能被100整除的为闰年。(如2004年就是闰年,1901年不是闰年) 
    地球公转示意图
    (2)世纪年能被400整除的是闰年。(如2000年是闰年,1100年不是闰年)

    输入语句scanf("%d-%d-%d",&y,&m,&d)可以存储年,月,日.输出语句格式类似printf("%d-%02d-%02d ",year,month,day).

    #--------------------------------------------------------------------------------#

    其他的都不用说,但是……啊啊啊!!!!!!!!

    它没有说保证输入数据无误!

    也就是说,输入数据会有类似于“2016-3-35”“2016-1-0”“2016-13-1”等等,比如说第一个数据,应该输出“2016-04-01”,第二个应该是“2016-01-01”,第三组数据应该是没有的,因为我的AC代码测第三组输出“2016-13-01”……

    然后就几个if完事。

    当然我的代码很长,可以用数组的方式简化一下(应该可以控制在20行左右,甚至缩短到10行):

    #include<cstdio>
    int main()
    {
    	int y,m,d;
    	scanf("%d-%d-%d",&y,&m,&d);
    	int f=1;
    	if(m==1||m==3||m==5||m==7||m==8||m==10)
    	{
    		if(d>=31)
    		{
    			d=1;
    			m++;
    			f=0;//f的作用就是在判断了一种就不用再判断了,因为这个if中最大月份只有10,++之后也只有11,即不用再判断月份是否大于12
    		}
    		else
    			d++;
    	}
    	if(m==12&&f)
    	{
    		if(d>=31)
    		{
    			m=1;
    			y++;
    			d=1;
    		}
    		else
    			d++;
    	}
    	if(m==2&&f)
    	{
    		if((y%4==0&&y%100!=0)||y%400==0)
    		{
    			if(d>=29)
    			{
    				d=1;
    				m++;
    			}
    			else
    				d++;
    		}	
    		else
    		{
    			if(d>=28)
    			{
    				d=1;
    				m++;
    			}
    			else
    				d++;
    		}
    	}
    	if((m==4||m==6||m==9||m==11)&&f)
    	{	
    		if(d>=30)
    		{
    			d=1;
    			m++;
    		}
    		else
    			d++;
    	}
    	printf("%d-%02d-%02d",y,m,d);
    }
    

    其他的也没什么好说的,我wrong了6次……
                                                                                                        By WZY
  • 相关阅读:
    [Postman]历史(8)
    [Postman]响应(7)
    [Postman]请求(6)
    [Postman]查找替换(5)
    ORA-02050故障诊断一例
    转 js实践篇:例外处理Try{}catch(e){}
    转 PHP
    HTML DOM getElementById() 方法
    地点选择
    9i 和 11 g 区别
  • 原文地址:https://www.cnblogs.com/LinqiongTaoist/p/7203770.html
Copyright © 2011-2022 走看看