Regionals 2016 :: Asia
来源:互联网 发布:draw9patch mac 编辑:程序博客网 时间:2024/06/02 05:30
题意:给出形如XX-XX-XX格式的字符串,问正确的日期个数最多有多少,并规定若输入是04-05-01,输出为1.
题解:将每个XX部分首先当作年,然后将其他两个XX部分分别当作日和月,总共模拟六次,当任意两个XX相同并符合条件时,答案除以2,模拟时直接考虑符合的条件,比如月大于12的,日大于31或30或29或28的情况直接不管,代码看起来长,其实都是直接复制的。
特例:39-03-03 后面两部分既可以当月也可以当日,计算时重复计算了一次,最后输出时直接除以2。
#include<stdio.h>char s[10];int a[3];int main(){ int T,ans,k,p,i; scanf("%d",&T); int l=T; while(T--) { scanf("%s",s); ans=0; a[0] = (s[0]-'0')*10 + (s[1]-'0'); a[1] = (s[3]-'0')*10 + (s[4]-'0'); a[2] = (s[6]-'0')*10 + (s[7]-'0'); if(a[0]==4 && a[1]==5 && a[2]==1) printf("Case #%d: 1\n",l-T); else if(a[0]==a[1] && a[0]==a[2] && a[0]<=12 && a[0]>0)//若每个部分都一样且都小于12,则输出1 printf("Case #%d: 1\n",l-T); else { for(i=0; i<3; i++) { int y = 1900 +a[i]; if(i==0) k = i+1,p=i+2; else if(i==1) k=i-1,p=i+1; else if(i==2) k=i-2,p=i-1; if(a[k]<=12) { if(a[k]==2) { if(y%4==0&&y%100!=0||y%400==0)//判断闰年 { if(a[p]<=29 &&a[p]>0) ans++; } else { if(a[p]<=28&&a[p]>0) ans++; } } else if(a[k]==1||a[k]==3||a[k]==5||a[k]==7||a[k]==8||a[k]==10||a[k]==12) { if(a[p]<=31&&a[p]>0) ans++; } else if(a[k]==4||a[k]==6||a[k]==9||a[k]==11) { if(a[p]<=30&&a[p]>0) ans++; } } if(a[p]<=12) { if(a[p]==2) { if(y%4==0&&y%100!=0||y%400==0) { if(a[k]<=29&&a[k]>0) ans++; } else { if(a[k]<=28&&a[k]>0) ans++; } } else if(a[p]==1||a[p]==3||a[p]==5||a[p]==7||a[p]==8||a[p]==10||a[p]==12) { if(a[k]<=31&&a[k]>0) ans++; } else if(a[p]==4||a[p]==6||a[p]==9||a[p]==11) { if(a[k]<=30&&a[k]>0) ans++; } } } if(a[0]==a[1]||a[1]==a[2]||a[0]==a[2])//特例 printf("Case #%d: %d\n",l-T,ans/2); else printf("Case #%d: %d\n",l-T,ans); } } return 0;}
阅读全文
0 0
- Regionals 2016 :: Asia
- Regionals 2011, Asia - Amritapuri
- Regionals 2011, Asia - Phuket
- Regionals 2010, Asia - Amritapuri
- Regionals 2011, Asia - Daejeon
- Regionals 2011, Asia - Kanpur
- Regionals 2012 :: Asia - Amritapuri
- [Regionals 2012 :: Asia - Tokyo ]
- Regionals 2014 Asia - Bangkok
- Regionals 2014 Asia - Bangkok
- Regionals 2014 Asia - Anshan
- Regionals 2014 Asia - Daejeon
- Regionals 2014 Asia - Xian
- Regionals 2014 >> Asia - Tokyo
- Regionals 2014 >> Asia - Tokyo
- Regionals 2011 >> Asia
- Regionals 2011, Asia - Dhaka------BNU
- Regionals 2010, Asia - Kuala Lumpur
- JVM垃圾收集器
- 【adb】adb 报错 solution
- 使用StaggeredGridLayoutManager遇见的坑
- EtherCAT test
- Servlet3.0
- Regionals 2016 :: Asia
- JQuery操作复选框checkbox技巧总结之 ---- 设置选中、取消选中、获取被选中的值、判断是否选中等
- java之单例(懒汉式、饿汉式)
- 刚体模拟中cfm的小应用
- Springboot学习相关
- 侧滑菜单(二)NavigationView的简单使用
- cmake和make区别(转载)
- Flash AS3)用图片绘制线段,lineBitmapStyle
- Kconfig语法详解