CF 304B(Calendar-一段时间的日期)
来源:互联网 发布:2016年上证指数数据 编辑:程序博客网 时间:2024/03/29 06:47
直接模拟,要考虑同一年,同年同月,同年同月同日(0),后面的日期靠前等情况
#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<functional>#include<iostream>#include<cmath>#include<cstring>#include<cctype>#include<ctime>using namespace std;#define For(i,n) for(int i=1;i<=n;i++)#define Fork(i,k,n) for(int i=k;i<=n;i++)#define Rep(i,n) for(int i=0;i<n;i++)#define Forp(x) for(int p=pre[x];p;p=next[p])int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int is_l(int y){ if (y%4==0&&y%100!=0) return 366; if (y%400==0) return 366;return 365;}int main(){//freopen(".in","r",stdin);//freopen(".out","w",stdout); int y1,m1,d1,y2,m2,d2; scanf("%d:%d:%d",&y1,&m1,&d1); scanf("%d:%d:%d",&y2,&m2,&d2); if (y1>y2||(y1==y2&&m1>m2)||(y1==y2&&m1==m2&&d1>d2)) swap(y1,y2),swap(m1,m2),swap(d1,d2); int tot=0; Fork(i,y1+1,y2-1) tot+=is_l(i); if (y1^y2) { if (m1<2) tot+=is_l(y1)==366?29:28; if (m2>2) tot+=is_l(y2)==366?29:28; Fork(i,m1+1,12) if (i!=2) tot+=a[i]; Fork(i,1,m2-1) if (i!=2) tot+=a[i]; tot+=d2; tot+=a[m1]-d1+1; if (m1==2&&is_l(y1)==366) tot++; if (tot) tot--; } else { if (m1^m2) { if (is_l(y1)==366) a[2]=29; Fork(i,m1+1,m2-1) tot+=a[i]; tot+=d2; tot+=a[m1]-d1+1; tot--; } else tot=d2-d1; } cout<<tot<<endl; return 0;}
- CF 304B(Calendar-一段时间的日期)
- codeforces 304B. Calendar (日期相减)
- CF 254B(日期)
- Calendar日期的计算
- Calendar日期的使用
- codeforces 304 B. Calendar
- Calendar针对于相隔一段时间自动执行的简单应用
- JAVA获取最近一段时间的日期
- 获取一段时间范围内的日期,月份 列表
- Calendar关于日期的使用?
- 处理日期的Calendar类
- calendar日期控件的使用
- java日期的加减 Calendar
- 日期时间:Calendar的使用
- Calendar日期的java转换
- Calendar 日期
- B. Calendar
- Calendar里的日期项的操作
- C++ 字符类型总结&CString ,BSTR ,LPCTSTR之间关系和区别
- C++笔记二:复制构造函数总结
- java学习 Java基本数据类型
- tcpdump Wireshark ,抓报分析脚本
- Keep-Alive简介及在Tomcat中配置
- CF 304B(Calendar-一段时间的日期)
- 容易犯错的做法
- 编译QT4.5.3中出现的错误
- Servlet/Filter 的生命周期
- 2013年5月13日 android :Animation;Theme、Style;Custom Title
- 2013-05-13
- 图片,音频,视频文件的上传 以及图片缩略图的制作,音频文件时长的获取以及 视频文件缩略图的获取
- 进程和线程的区别
- 体内湿气不排出,永远睡不饱