zoukankan      html  css  js  c++  java
  • 2017第八届蓝桥杯C/C++ B组省赛-日期问题

    标题:日期问题
    
    小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在1960年1月1日至2059年12月31日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。  
    
    比如02/03/04,可能是2002年03月04日、2004年02月03日或2004年03月02日。  
    
    给出一个文献上的日期,你能帮助小明判断有哪些可能的日期对其对应吗?
    
    输入
    ----
    一个日期,格式是"AA/BB/CC"。  (0 <= A, B, C <= 9)  
    
    输出
    ----
    输出若干个不相同的日期,每个日期一行,格式是"yyyy-MM-dd"。多个日期按从早到晚排列。  
    
    样例输入
    ----
    02/03/04  
    
    样例输出
    ----
    2002-03-04  
    2004-02-03  
    2004-03-02  
    
    资源约定:
    峰值内存消耗(含虚拟机) < 256M
    CPU消耗  < 1000ms
    
    
    请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
    
    注意:
    main函数需要返回0;
    只使用ANSI C/ANSI C++ 标准;
    不要调用依赖于编译环境或操作系统的特殊函数。
    所有依赖的函数必须明确地在源文件中 #include <xxx>
    不能通过工程设置而省略常用头文件。
    
    提交程序时,注意选择所期望的语言类型和编译器类型。


    当时唯一能写出来的大题,写出来的时候特别兴奋,可是当我比赛最后几秒无意识的瞎测数据的时候发现,,,我只对年份排序了,,忘了排序月了,,希望样例多爱我几分QAQ

     1 #include<stdio.h>
     2 #include<algorithm>
     3 using namespace std;
     4 struct A{
     5     int x,y,z;
     6 }AC[3];
     7 bool cmp(A a,A b)
     8 {
     9     if(a.x==b.x)
    10     {
    11         if(a.y==b.y)
    12         {
    13             return a.z<b.z;
    14         }
    15         return a.y<b.y;
    16     }
    17     return a.x<b.x;
    18 }
    19 int run(int a)
    20 {
    21     if((a%400==0)||(a%100!=0)&&(a%4==0))
    22         return 1;
    23     return 0;
    24 }
    25 int main()
    26 {
    27     int a,b,c,i,aa,cc;
    28     while(scanf("%d/%d/%d",&a,&b,&c)!=EOF)
    29     {
    30         if(a>=60&&a<=99)
    31             aa=a+1900;
    32         else 
    33             aa=a+2000;
    34         if(c>=60&&c<=99)
    35             cc=c+1900;
    36         else 
    37             cc=c+2000;
    38         
    39         AC[0].x=aa;AC[0].y=b;AC[0].z=c;
    40         AC[1].x=cc;AC[1].y=a;AC[1].z=b;
    41         AC[2].x=cc;AC[2].y=b;AC[2].z=a;
    42         sort(AC,AC+3,cmp);
    43         for(i=0;i<3;i++)
    44         {
    45             if(i>0)
    46             {
    47                 if(AC[i].x==AC[i-1].x&&AC[i].y==AC[i-1].y&&AC[i].z==AC[i-1].z)
    48                     continue;
    49             }
    50             if(AC[i].x>=1960&&AC[i].x<=2059)
    51             {
    52                 if(AC[i].y>=1&&AC[i].y<=12)
    53                 {
    54                     if(AC[i].y==2)
    55                     {
    56                         if(run(AC[i].x))
    57                         {
    58                             if(AC[i].z>=1&&AC[i].z<=29)
    59                             {
    60                                 printf("%d-%02d-%02d
    ",AC[i].x,AC[i].y,AC[i].z);
    61                             }
    62                         }
    63                         else 
    64                         {
    65                             if(AC[i].z>=1&&AC[i].z<=28)
    66                             {
    67                                 printf("%d-%02d-%02d
    ",AC[i].x,AC[i].y,AC[i].z);
    68                             }
    69                         }
    70                     }
    71                     else if(AC[i].y==4||AC[i].y==6||AC[i].y==9||AC[i].y==11)
    72                     {
    73                         if(AC[i].z>=1&&AC[i].z<=30)
    74                             {
    75                                 printf("%d-%02d-%02d
    ",AC[i].x,AC[i].y,AC[i].z);
    76                             }
    77                     }
    78                     else 
    79                     {
    80                         if(AC[i].z>=1&&AC[i].z<=31)
    81                             {
    82                                 printf("%d-%02d-%02d
    ",AC[i].x,AC[i].y,AC[i].z);
    83                             }
    84                     }
    85                 }
    86              } 
    87         }
    88     }
    89     return 0;
    90 } 
     
  • 相关阅读:
    react路由组件&&非路由组件
    react函数式组件(非路由组件)实现路由跳转
    react使用antd组件递归实现左侧菜单导航树
    【LeetCode】65. Valid Number
    【LeetCode】66. Plus One (2 solutions)
    【LeetCode】68. Text Justification
    【LeetCode】69. Sqrt(x) (2 solutions)
    【LeetCode】72. Edit Distance
    【LeetCode】73. Set Matrix Zeroes (2 solutions)
    【LeetCode】76. Minimum Window Substring
  • 原文地址:https://www.cnblogs.com/ljmzzyk/p/6918643.html
Copyright © 2011-2022 走看看