【日期】车辆限行(选作)----大水题

来源:互联网 发布:众划算淘宝违规吗 编辑:程序博客网 时间:2024/06/10 11:59

成绩5开启时间2014年12月22日 Monday 14:00折扣0.8折扣时间2014年12月31日 Wednesday 23:55允许迟交否关闭时间2014年12月31日 Wednesday 23:55

    2012年4月1日,北京是人民政府根据《中华人民共和国道路交通安全法》和《北京市实施〈中华人民共和国大气污染防 治法〉办法》有关规定,自2012年4月11日起,继续对机动车实施按车牌尾号工作日高峰时段 区域限行交通管理措施。
  根据规定,按车牌尾号限行的机动车车牌尾号分为五组,每13周轮换一次限行日,分别为:
  (1) 自2012年4月9日至2012年7月7日,星期一至星期五限行机动车车牌尾号分别为:3和8、4和9、5和0、1和6、2和7(含临时号牌,机动车车牌尾号为英文字母的按0号管理,下同);
  (2) 自2012年7月8日至2012年10月6日,星期一至星期五限行机动车车牌尾号分别为:2和7、3和8、4和9、5和0、1和6;
  (3) 自2012年10月7日至2013年1月5日,星期一至星期五限行机动车车牌尾号分别为:1和6、2和7、3和8、4和9、5和0;
  (4) 自2013年1月6日至2013年4月10日,星期一至星期五限行机动车车牌尾号分别为:5和0、1和6、2和7、3和8、4和9。

现给出 2012 年 4 月 9 日之后的任意日期,如果不考虑国家统一的公假,只考虑日期一个因素,请计算指定日期要限行的车牌尾号。

(政府的公告确实有点意思,在时间衔接上和限号安排上公告(http://unn.people.com.cn/GB/14748/17574443.html)与公告(http://www.gov.cn/gzdt/2013-04/02/content_2367908.htm)之间有重叠,显然,后面的公告是覆盖前面的公告的,我们计算的时候,只能是“理论”上的事情,咱严格按照从 2012年4月9日 星期一 开始,每 13 周进行一次轮换计算就可以了。)

 测试输入关于“测试输入”的帮助期待的输出关于“期待的输出”的帮助时间限制关于“时间限制”的帮助内存限制关于“内存限制”的帮助额外进程关于“{$a} 个额外进程”的帮助测试用例 1以文本方式显示
  1. 2012 7 9↵
以文本方式显示
  1. 2 and 7.↵
无限制64M0测试用例 2以文本方式显示
  1. 2012 7 12↵
以文本方式显示
  1. 5 and 0.↵
无限制64M0测试用例 3以文本方式显示
  1. 2012 7 14↵
以文本方式显示
  1. Free.↵
无限制64M0测试用例 5以文本方式显示
  1. 2013 4 11↵
以文本方式显示
  1. 2 and 7.↵
无限制64M0测试用例 6以文本方式显示
  1. 2014 4 4↵
以文本方式显示
  1. 5 and 0.↵
无限制64M0测试用例 9以文本方式显示
  1. 2014 3 31↵
以文本方式显示
  1. 1 and 6.↵
无限制64M

0


本来是一道大水题,可是我用错了三目运算符 导致出了点问题 提交上去总是错了一个

debug了N久 才发现

#include<stdio.h>int days(int year,int month,int day){int leap=0;int ping[13]={0,31,59,90,120,151,181,212,243,273,304,334,365};int run[13]={0,31,60,91,121,152,182,213,244,274,305,335,366};int sum=0;if(year==2012)  {sum=sum-99+ping[month-1]+day;return sum;} else{   for(int i=2013;i<=year;i++)      if((i%4==0&&i%100!=0)||i%400==0) sum+=366;      else sum+=365;   if((year%4==0&&year%100!=0)||year%400==0)    {leap=1;sum=(sum-99+run[month-1]+day-1);}//原来写的是sum=(leap=1)?(sum-99+run[month-1]+day-1):(sum-99+ping[month-1]+day-1);  判断的 =没有写两个 。。 给低级错误跪了   else sum=(sum-99+ping[month-1]+day);return sum;}}int sec(int n){if(n+5>=10) return n-5;else return n+5;} int main(){int cyc[5][5]={3,4,5,1,2,2,3,4,5,1,1,2,3,4,5,5,1,2,3,4,4,5,1,2,3};int year,month,day,sum;int time;while(scanf("%d %d %d",&year,&month,&day)!=EOF){sum=days(year,month,day)+1;time=sum/91;time%=5;if((sum-1)%91%7==6||(sum-1)%91%7==5) printf("Free.\n");else printf("%d and %d.\n",cyc[time][(sum-1)%91%7],sec(cyc[time][(sum-1)%91%7]));//printf("%d",sum);}}


0 0
原创粉丝点击