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。
分析:
计算星期几可以直接用公式进行计算
计算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/8661983
int 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;
}
Gym 101206L Daylight Saving Time 根据年月日计算星期的更多相关文章
- 08--MOOC--C/C++ 根据年月日计算星期几
计算任何一天是星期几的几种算法 一:常用公式 W = [Y-1] + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D Y是年份数,D是这一天在这一年中的累积天数,也 ...
- An problem about date 根据年月日计算 星期几
/W = (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7(1.2月需要看作上一年的13.14月) #include<stdio.h> #include& ...
- C# 根据日期计算星期几
region 根据年月日计算星期几(Label2.Text=CaculateWeekDay(,,);) /// <summary> /// 根据年月日计算星期几(Label2.Text=C ...
- hdu 6010 Daylight Saving Time 泰勒公式
Daylight Saving Time Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- Daylight Saving Time
[Daylight Saving Time] 夏时制,又称日光节约时制.日光節約時間(英语:Daylight saving time)或夏令时间(英语:Summer time),是一种为节约能源而人为 ...
- DayLight Saving Light(HDU6010)
传送门:DayLight Saving Light 夏令时: 夏时令(Daylight Saving Time:DST),又称“日光节约时制”和“夏令时间”,是一种为节约能源而人为规定地方时间的制度, ...
- HDU6010 Daylight Saving Time
/* HDU6010 Daylight Saving Time http://acm.hdu.edu.cn/showproblem.php?pid=6010 模拟 题意:算当前时间是否是夏令时 */ ...
- 编写Java程序随机输入日期计算星期几,打印任意一年的日历
需求说明: 随机输入日期计算星期几,打印任意一年的日历 已知,1900年1月1日是星期1,用户随机输入年月日,计算星期几 实现思路: 一.知道1900年1月1日为星期一,求输入的年份月份与1900年1 ...
- 根据日期计算星期几----蔡勒(Zeller)公式推导
计算给定日期是星期几,好象是编程都会遇到的问题,最近论坛里也有人提到这个问题,并给出了一个公式: W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400 ...
随机推荐
- 目录和文件 按创建时间排序du -h --time --max-depth=1 . |sort -r -t $'\t' -k 2 Linux查看文件夹大小,并按文件夹创建时间排序
目录和文件 按创建时间排序 # du -h --time --max-depth=1 . |sort -r -t $'\t' -k 230M 2020-04-01 14:54 .28K 2020-04 ...
- jmeter完成一个简单的性能测试(jp@gc - PerfMon Metrics Collector的运用)
场景:公司项目解耦,在项目前期对新的架构进行简单的性能测试 工具:jmeter 1.大致结构如下: 1800秒(半个小时)内持续产生20000的线程 创建了聚合报告,主要是查看服务器响应结果以及相应时 ...
- 009.kubernets的调度系统之污点和容忍
Taints和Tolerations(污点和容忍) Taint需要与Toleration配合使用,让pod避开那些不合适的node.在node上设置一个或多个Taint后,除非pod明确声明能够容忍这 ...
- Angular环境搭建及简单体验
一.安装开发环境 npm install -g typescript npm install -g @angular/cli 二.创建hello-world项目 创建项目 ng new angular ...
- java面试一日一题:java中的垃圾回收器
问题:请讲下java中垃圾回收器有哪些? 分析:该问题主要考察hotspot虚拟机下实现的垃圾回收器 回答要点: 主要从以下几点去考虑, 1.垃圾回收器的种类 2.每种垃圾回收器的着重点是什么 前边的 ...
- CPU的自动调度矩阵乘法
CPU的自动调度矩阵乘法 这是一个有关如何对CPU使用自动调度程序的文档. 与依靠手动模板定义搜索空间的基于模板的autotvm不同,自动调度程序不需要任何模板.用户只需要编写计算声明,而无需任何调度 ...
- CUDA 7 Stream流简化并发性
CUDA 7 Stream流简化并发性 异构计算是指高效地使用系统中的所有处理器,包括 CPU 和 GPU .为此,应用程序必须在多个处理器上并发执行函数. CUDA 应用程序通过在 streams ...
- httprunnermanager安装和配置
服务端安装mysql数据库(建议5.7以上的,mysql安装教程),设置utf-8编码,创建对应的数据库,设置好相应的用户名,密码,然后启动mysql 下载httprunnermanager 安装ht ...
- 深入解读Redis分布式锁
之前码甲哥写了两篇有关线程安全的文章: 你管这叫线程安全? .NET八股文:线程同步技术解读 分布式锁是"线程同步"的延续 最近首度应用"分布式锁",现在想想, ...
- 【逆向&渗透实战】Dump内存中的Dex_我是如何脱壳某公司加固过的Apk并利用其API渗透对方数据库
/作者:Kali_MG1937 QQ:3496925334 CNBLOG博客号:ALDYS4/ 某天午睡,朦朦胧胧梦到给学校提供建站模板的公司有个注射点 梦醒后,我凭借着零散的记忆日进了对面的数据库, ...