Gym 101206L Daylight Saving Time 根据年月日计算星期
题意:
[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 根据年月日计算星期相关推荐
- 蔡勒公式 java,C/C++根据年月日计算星期几(蔡勒公式篇)
蔡勒公式 蔡勒(Zeller)公式:是一个计算星期的公式. 随便给一个日期,就能用这个公式推算出是星期几. 蔡勒公式如下: W = [C/4] - 2C + y + [y/4] + [13 * (M ...
- C# 根据年月日计算星期几
基姆拉尔森公式 基姆拉尔森公式可以用来计算某年某月某日是星期几,下面是使用C#进行演示的代码: using System; using System.Collections.Generic; usin ...
- C# 根据日期计算星期几
1 region 根据年月日计算星期几(Label2.Text=CaculateWeekDay(2004,12,9);) 2 /// <summary> 3 /// 根据年月日计算星期几( ...
- php 输入出生年月日计算年纪,PHP实现根据出生年月日计算年龄的功能(代码示例)...
本篇文章给大家介绍一下使用PHP实现根据出生年月日计算年龄的功能,结合实例形式分析了php日期相关转换与计算操作技巧.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 废话不多说,之间 ...
- 根据出生年月日计算出生了多少年,多少月,多少天
根据出生年月日计算出生了多少年,多少月,多少天 1,定义一个方法获得出生日期的Date类型时间 /*** // 格式化字符串类型的时间* @param birthday* @return* @thro ...
- 根据年月日计算今天是一年中的第几天
根据年月日计算今天是一年中的第几天 static char daytab[2][13]= { {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, ...
- PHP实现根据出生年月日计算年龄的功能(代码示例)
本篇文章给大家介绍一下使用php实现根据出生年月日计算年龄的功能,结合实例形式分析了php日期相关转换与计算操作技巧.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 废话不多说,之间 ...
- c语言编码2018新年快乐,c语言代码,输入年月日计算离2018年春节(2019年2月5日)还有多少天?...
c语言代码,输入年月日计算离2018年春节(2019年2月5日)还有多少天? 关键字:c语言 更新时间:2018-11-12 04:50:55 136次访问 这个可以用C标准函数实现 #include ...
- 给出年月日计算该天是该年的第几天(大学C语言练习
C语言## 给出年月日计算该天是该年的第几天(大学C语言练习 给出年月日计算该天是该年的第几天(大学C语言练习) #include<stdio.h> //闰年全年366天,平年全年365天 ...
最新文章
- 如何使用Linux内核中没有被导出的变量或函数
- mfc e将控件置于窗口顶层_【创e分享】Word毕业论文排版全攻略
- Lync Server 2013之初次安装
- (38)Gulp任务完整组合写法
- 2017.5.9 寻找道路 思考记录
- javascript 关键字this
- .net知识和学习方法系列(十七)CLR-CLR中的值类型和引用类型
- usaco Ordered Fractions
- Google Chrome Native Messaging开发实录(二)Chrome Extension扩展
- 0920 - 积极休息
- c语言:鸡兔同笼问题
- redis的lpush、rpush、rpop、lpop位置的简单理解
- 微信公众号基础入门知识
- C++(指针和高级指针)-上篇
- C++字母大小写转换
- 管理软件开发的最高境界,那就是“无代码开发”
- Mapper method 'com.XXX.dao.XXXMapper.XXX' has an unsupported return type: class XXX
- ROWTYPE 数据类型实践和使用
- linux crash工具用法,使用crash工具看懂slab
- STC 模拟eeprom数据丢失