题意:

[3月的第二个周日02:00:00 , 3月的第二个周日03:00:00) 这个区间都不是PST或PDT,[11月的第一个周日01:00:00 , 11月的第一个周日02:00:00) 这个区间既是PST又是PDT,中间的是PDT,两边的是PST。

分析:

计算星期几可以直接用公式进行计算

C/C++ 根据年月日计算星期几——蔡勒公式篇

计算3月的第二个周日为哪一天:day=15-ReturnWeekDay(year,3,1)

计算11月的第一个周日为哪一天:day=8-ReturnWeekDay(year,11,1)

这个公式可以自行推导

#include <bits/stdc++.h>
using namespace std;char s[50];struct Time
{int mth,day;int hor,mnt,scd;Time() {};Time(int m,int d,int h,int mi,int s){mth=m,day=d;hor=h,mnt=mi,scd=s;}
} ti;int ReturnWeekDay( unsigned int iYear, unsigned int iMonth, unsigned int iDay )
{   //http://blog.csdn.net/areskris/article/details/8661983int iWeek=0;unsigned int y=0, c=0, m=0, d=0;if(iMonth==1 || iMonth==2 ){c=( iYear-1)/ 100;y=( iYear-1)% 100;m=iMonth+12;d=iDay;}else{c=iYear/100;y=iYear%100;m=iMonth;d=iDay;}iWeek=y+y/4+c/4-2*c+26*(m+1)/10+d-1;            //蔡勒公式iWeek=iWeek >= 0 ?(iWeek % 7):(iWeek%7+7);      //iWeek为负时取模if(iWeek==0) iWeek=7;                           //星期日不作为一周的第一天return iWeek;
}int circle(int k)
{int res=0;for(int i=k; i<k+2; i++){res*=10;res+=s[i]-'0';}return res;
}void transf()
{ti.mth=circle(5);ti.day=circle(8);ti.hor=circle(11);ti.mnt=circle(14);ti.scd=circle(17);
}bool cmp(Time a,Time b)
{if(a.mth==b.mth){if(a.day==b.day){if(a.hor==b.hor){if(a.mnt==b.mnt){return a.scd<b.scd? false:true;}return a.mnt<b.mnt? false:true;}return a.hor<b.hor? false:true;}return a.day<b.day? false:true;}return a.mth<b.mth? false:true;
}int main()
{
//    freopen("in.txt","r",stdin);int t,kase=0;scanf("%d",&t);getchar();while(t--){gets(s);transf();int year=0;for(int i=0; i<4; i++){year*=10;year+=s[i]-'0';}int day=15-ReturnWeekDay(year,3,1);Time pst1=Time(3,day,2,0,0);Time pdt1=Time(3,day,3,0,0);day=8-ReturnWeekDay(year,11,1);Time pdt2=Time(11,day,1,0,0);Time pst2=Time(11,day,2,0,0);printf("Case #%d: ",++kase);if(!cmp(ti,pst1) || cmp(ti,pst2))puts("PST");else if(cmp(ti,pst1) && !cmp(ti,pdt1))puts("Neither");else if(cmp(ti,pdt1) && !cmp(ti,pdt2))puts("PDT");else puts("Both");}return 0;
}

转载于:https://www.cnblogs.com/pach/p/7193383.html

Gym 101206L Daylight Saving Time 根据年月日计算星期相关推荐

  1. 蔡勒公式 java,C/C++根据年月日计算星期几(蔡勒公式篇)

    蔡勒公式  蔡勒(Zeller)公式:是一个计算星期的公式. 随便给一个日期,就能用这个公式推算出是星期几. 蔡勒公式如下: W = [C/4] - 2C + y + [y/4] + [13 * (M ...

  2. C# 根据年月日计算星期几

    基姆拉尔森公式 基姆拉尔森公式可以用来计算某年某月某日是星期几,下面是使用C#进行演示的代码: using System; using System.Collections.Generic; usin ...

  3. C# 根据日期计算星期几

    1 region 根据年月日计算星期几(Label2.Text=CaculateWeekDay(2004,12,9);) 2 /// <summary> 3 /// 根据年月日计算星期几( ...

  4. php 输入出生年月日计算年纪,PHP实现根据出生年月日计算年龄的功能(代码示例)...

    本篇文章给大家介绍一下使用PHP实现根据出生年月日计算年龄的功能,结合实例形式分析了php日期相关转换与计算操作技巧.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 废话不多说,之间 ...

  5. 根据出生年月日计算出生了多少年,多少月,多少天

    根据出生年月日计算出生了多少年,多少月,多少天 1,定义一个方法获得出生日期的Date类型时间 /*** // 格式化字符串类型的时间* @param birthday* @return* @thro ...

  6. 根据年月日计算今天是一年中的第几天

    根据年月日计算今天是一年中的第几天 static char daytab[2][13]= { {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, ...

  7. PHP实现根据出生年月日计算年龄的功能(代码示例)

    本篇文章给大家介绍一下使用php实现根据出生年月日计算年龄的功能,结合实例形式分析了php日期相关转换与计算操作技巧.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 废话不多说,之间 ...

  8. c语言编码2018新年快乐,c语言代码,输入年月日计算离2018年春节(2019年2月5日)还有多少天?...

    c语言代码,输入年月日计算离2018年春节(2019年2月5日)还有多少天? 关键字:c语言 更新时间:2018-11-12 04:50:55 136次访问 这个可以用C标准函数实现 #include ...

  9. 给出年月日计算该天是该年的第几天(大学C语言练习

    C语言## 给出年月日计算该天是该年的第几天(大学C语言练习 给出年月日计算该天是该年的第几天(大学C语言练习) #include<stdio.h> //闰年全年366天,平年全年365天 ...

最新文章

  1. 如何使用Linux内核中没有被导出的变量或函数
  2. mfc e将控件置于窗口顶层_【创e分享】Word毕业论文排版全攻略
  3. Lync Server 2013之初次安装
  4. (38)Gulp任务完整组合写法
  5. 2017.5.9 寻找道路 思考记录
  6. javascript 关键字this
  7. .net知识和学习方法系列(十七)CLR-CLR中的值类型和引用类型
  8. usaco Ordered Fractions
  9. Google Chrome Native Messaging开发实录(二)Chrome Extension扩展
  10. 0920 - 积极休息
  11. c语言:鸡兔同笼问题
  12. redis的lpush、rpush、rpop、lpop位置的简单理解
  13. 微信公众号基础入门知识
  14. C++(指针和高级指针)-上篇
  15. C++字母大小写转换
  16. 管理软件开发的最高境界,那就是“无代码开发”
  17. Mapper method 'com.XXX.dao.XXXMapper.XXX' has an unsupported return type: class XXX
  18. ROWTYPE 数据类型实践和使用
  19. linux crash工具用法,使用crash工具看懂slab
  20. STC 模拟eeprom数据丢失

热门文章

  1. 北京的小伙伴,本周五阿里聚安全约你来玩
  2. 如何站在双11的肩膀上 详解阿里云企业级互联网架构
  3. vsftp.conf 配置文件详解
  4. java随机函数用法Random(转)
  5. UVa 11078 - Open Credit System
  6. .bash_profile和.bashrc的什么差别
  7. 直接拿来用!超实用的Java数组技巧攻略
  8. 《『若水新闻』客户端开发教程》——14.代码编写(6)
  9. Linux 局域网路由新手指南:第 2 部分
  10. 游标遍历所有数据库循环执行修改数据库的sql命令