问题:http://hihocoder.com/problemset/problem/1148

给定两个日期,计算这两个日期之间有多少个2月29日(包括起始日期)。

思路:

1. 将问题转换成求两个日期间有几个闰年

  • 基本公式:闰年数(endYear,startYear) = 闰年数(0, endYear) - 闰年数(0, startYear)
  • 注意点:区间的端点值

2. 闰年的要求

  • 不能被100整除,能被4整除
  • 能被400整除

3. cnt = [i / 4]

  • cnt = [i / 4]取整: 这个可以得出从0到i中有几个数是4的倍数 1*4, 2*4, 3*4, 4*4......
  • 同理,可以求得有几个是100的倍数,几个是400的倍数

4. 关于两端,就是startYear和endYear是否应该再计算在内的问题

  • 1到10之间有 10 -1 + 1 = 10 个数
  • 所以应该注意区间的第一个数!直接减的话,会将它减掉了

5. 代码注意点

  • scanf()来读入有一定格式的输入,string类型不用来存字符串的。
 string str;
scanf("%s", str);//不应该这么用
char strs[];
scanf("%s", strs);
  • scanf()需要包含头文件 #include <string.h>

代码:

 #include <iostream>
#include <string.h>
using namespace std; bool isLeap(int year)
{
if ((year % != && year % == ) || (year % == && year % == ))
return true;
return false;
} int main()
{
int cnt, startDay, endDay, startYear, endYear, leapCnt, i = ;
char startMonth[], endMonth[]; cin >> cnt;
while (i++ < cnt)
{
leapCnt = ;
scanf("%s %d, %d", startMonth, &startDay, &startYear);
scanf("%s %d, %d", endMonth, &endDay, &endYear); //日期已经超过2月29日,则不应该再考虑startYear里面的2月29日
if ((strcmp(startMonth, "February") != && strcmp(startMonth, "January") != )
|| (strcmp(startMonth, "February") == && startDay > ))
startYear++;
//日期没有超过2月29日,则不应该再考虑endYear里面的2月29日
if (strcmp(endMonth, "January") ==
|| (strcmp(endMonth, "February") == && endDay < ))
endYear--;
leapCnt = (endYear / - endYear / + endYear / ) - (startYear / - startYear / + startYear / );
if (isLeap(startYear))//startYear里面的2月29日!
leapCnt++;
cout << "Case #" << i << ": " << leapCnt << endl;
}
return ;
}

最新文章

  1. C#中两个Form窗口之间的传值(父-&gt;子)(子-&gt;父)
  2. Nodejs与ES6系列3:generator对象
  3. 【学】jQuery的源码思路6——增加each,animaion,ajax以及插件机制
  4. CI登录验证
  5. jQuery Ajax 简单的实现跨域请求
  6. Ubuntu 下配置ftp服务端
  7. MongoDB 语法(转)
  8. QCon 2013 上海 -- 互联网金融
  9. Ubuntu下VSFTPD(五)(匿名FTP设置方法)
  10. 保存网页MHT
  11. 符合altium designer操作习惯的cadence快捷键设置
  12. 使用单例模式实现自己的HttpClient工具类
  13. Memcached和Redis简介
  14. Windows下WebStorm使用SVN(转)
  15. JS中处理单个反斜杠(即转义字符的处理)
  16. RabbitMQ Cluster群集安装配置
  17. 第13章 切换到混合流并添加API访问 - Identity Server 4 中文文档(v1.0.0)
  18. nuxt博客项目
  19. Python 的 Magic Methods 指南(转)
  20. 关于vue的语法规则检测报错问题

热门文章

  1. 远程ssh登陆时报错:/bin/bash: Permission denied
  2. 自定义TextView 调用ttf格式字体
  3. MFC 创建多层目录
  4. Oracle
  5. html5 websocket 实时日志推送
  6. 鱼搜_鱼搜官网_鱼搜搜索_http://www.7yusou.com
  7. 浅入tomcat
  8. webform文件上传、图片水印、验证码
  9. Tomat简介
  10. html学习第三天—— 第11章 盒子模型 div