codeforces B. Calendar 解题报告
题目链接:http://codeforces.com/problemset/problem/304/B
题目意思:给出两个日期,需要算出这两个日期之间有多少日。
细心模拟就可以了。特别要注意的是,两个日期是同一年的处理。我的解决方法是,算出小的那一个日期的天数离它所处月份还有多少天,大的日期的天数加上去,还有一部分是它们之间相隔的月数总天数。另外,为了方便处理,保证了第一个处理的日期是较小的。
1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <algorithm> 5 using namespace std; 6 7 static char dd[2][13] = { 8 {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, 9 {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} 10 }; 11 12 int jd_year(int year) 13 { 14 if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) 15 return 1; 16 return 0; 17 } 18 19 int day_of_year(int year, int month, int day) // 算出该日期在该year年处于第几天 20 { 21 for (int i = 1; i < month; i++) 22 day += dd[jd_year(year)][i]; 23 return day; 24 } 25 26 int main() 27 { 28 int y, m, d, y1, m1, d1, i, cnt; 29 scanf("%d:%d:%d", &y, &m, &d); 30 scanf("%d:%d:%d", &y1, &m1, &d1); 31 if (y > y1 || (y == y1 && m > m1) || (y == y1 && m == m1 && d > d1)) 32 { 33 swap(y, y1); 34 swap(m, m1); 35 swap(d, d1); 36 } 37 if (y == y1) 38 { 39 if (m != m1) 40 { 41 cnt = dd[jd_year(y)][m]-d + d1; 42 for (i = m+1; i < m1; i++) 43 cnt += dd[jd_year(y)][i]; 44 } 45 else 46 cnt = d1 - d; 47 } 48 else 49 { 50 cnt = day_of_year(y, m, d); 51 if (jd_year(y)) 52 cnt = 366 - cnt; 53 else 54 cnt = 365 - cnt; 55 cnt += day_of_year(y1, m1, d1); 56 for (i = y+1; i < y1; i++) 57 { 58 if (jd_year(i)) 59 cnt += 366; 60 else 61 cnt += 365; 62 } 63 } 64 printf("%d\n", cnt); 65 return 0; 66 } 67 68
转载于:https://www.cnblogs.com/windysai/p/3535918.html
codeforces B. Calendar 解题报告相关推荐
- codeforces 50A-C语言解题报告
50A题目网址 解题报告-others 题目解析 1.输入n x m大小的木板,使用21大小的多米诺去填满,求最多的多米诺数目 2.通过分析把木板分为奇数和偶数的情况 1)有一边是偶数的情况: 使用2 ...
- codeforces 122A-C语言解题报告
122A题目网址 题目解析 1.输入数字(在1000以内),若能被4,7幸运数整除或只含4,7则输出YES,否则输出NO 举例: 输入: 107 输出: NO 2.解题关键: 1)使用列举法,把所有符 ...
- codeforces 118A-C语言解题报告
118A题目网址 题目解析 1.输入一个英语字符串,要求把其中的元音字母删去(元音是字母"A"."O"."Y"."E". ...
- codeforces 231A-C语言解题报告
231A题目网址 题目解析 1.输入比赛的题目,每一道题3个人的解题状况(0或1),输出总的解答题目(每一个题至少有2个,记1次) 2.在for循环中去录入每道题的解答状况 3.因为有题目解答的计算, ...
- codeforces 499B.Lecture 解题报告
题目链接:http://codeforces.com/problemset/problem/499/B 题目意思:给出两种语言下 m 个单词表(word1, word2)的一一对应,以及 profes ...
- codeforces 486A-C语言解题报告
题目网址 题目解析 1.f(n)=(-1)^nn 2.使用long long int 3.总结找出规律: if(i%2!=0) return -1(i+1)/2; else return i/2; 直 ...
- codeforces 705A-C语言解题报告
题目网址 题目解析 1.重点:结尾是it,中间使用that连接,所以使用for循环,奇数输出I hate,偶数输出I love,i!=n时,输出that 代码 #include<stdio.h& ...
- codeforces 158B-C语言解题报告
题目网址 题目解析 参考博客 代码 #include<iostream> #include<string.h> #include<algorithm> #inclu ...
- codeforces 318A-C语言解题报告
题目网址 题目 1.一个数先奇数从小到大再偶数从小到大(1–n),问第k个数是什么? 2.举例发现规律: 第k个数与n的奇偶无关,使用中间数mid=(a+1)/2;进行判断,k是奇数还是偶数 奇数:c ...
最新文章
- [k8s] 重新加入master节点
- openstack基于mysql的问题修复
- 关于FactoryBean 和BeanFactory
- 本地开发时同时启动多个tomcat服务器
- 面向失败的设计之播控系统!
- Fanuc机器人从控制柜导出GSD文件
- 材料成型与控制专业和计算机专业,材料成型及控制工程专业
- UVALive 6437
- mapped file has no Team ID and is not a platform binary (signed with custom identity or adhoc?
- h5网页版字母消除游戏制作,html+jquery
- 360插件化方案RePlugin学习笔记-插件使用宿主中的类
- Clustering coefficient的计算
- CSS实现div填满剩余高度
- 用键盘控制鼠标移动!!
- 《linux内核设计分析》 第一周作业
- C语言关键字及其解释[共32个]
- LPC1788在外部RAM调试总结
- 单相桥式整流电容滤波及稳态时的波形分析
- Laravel中curl_multi并发爬取百度关键词排名
- 借贷领域需求强烈,Trister‘s Lend上线TVL超2000万美元值得关注!
热门文章
- cjavapy编程书店简介
- HTML5期末大作业:在线电影网站设计——我不是药神电影介绍(4页) HTML+CSS+JavaScript 大二实训大作业HTML源码...
- 计算机硬件5z101,MTK手机无线应用之手机做Modem连接电脑上网篇.doc
- php常见sql语句,sql语句是什么
- 华为电脑分类四个系列_华为正式推出“重新定义的个人电脑”,我们用四个问题阐述它是啥...
- 百度文库怎么操作才能提高成功率方法解析
- 网站推荐:检索全球范围内有趣实用的网站【持续更新】
- 宏信证券手机网上开户流程
- 离线下载chrome
- 【Inno Setup】Inno 与 驱动文件的安装