HDU 2005
来源:互联网 发布:re文件管理器源码 编辑:程序博客网 时间:2024/05/22 06:22
第几天?
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 64151 Accepted Submission(s): 24258
Problem Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/202006/3/12
Sample Output
2071
为什么说这题 ,因为比赛时遇到一道类似的题当时脑袋比较坍塌, 竟然纠结了很久
题意; 算几月几号是那年的第几天
算法思想:
1、判断平年还是闰年 这里用宏定义
2、需要一个二维数组表示 那年的各月分的天数 这个很重要特别是28 29,很坑爹
3、用个循环线把之前的月份的天数加起来 最后再加个零头就可以了
源代码:
#include<iostream>#include<cstdio>using namespace std;#define lev(n) (n%4 ==0 && (n%100 != 0 || n%400 ==0))int main(){//上面定义了一宏 首先能被4整除, 不能被100 可以被400整除的数是 闰年返回1其他返回0 int i; int y, m, d; while(scanf("%d/%d/%d",&y,&m,&d) != EOF) {//思路很简单先把这个年头的所有月份的天数先算出来 再加上这个月的 //技巧在于为什么先是0 因为如果不先为0 的话 是1月的话, 那么1 月的天数也会被加上的 int day = 0; int month[2][13] = {{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}}; for(i =0; i < m; i++) { day += month[lev(y)][i]; } day += d; cout<<day<<endl; } return 0;}
0 0
- hdu 2005
- hdu 2005
- HDU 2005
- HDU-2005
- hdu 2005
- HDU 2005
- HDU 2005
- HDU 2005
- HDU-2005
- HDU 2005
- HDU-2005
- hdu 2005
- HDU 2005
- hdu 2005 第几天
- hdu 2005 java_calendar
- HDU 2005 第几天
- HDU 2005 第几天?
- hdu 2005 第几天?
- socket connect 阻塞与非阻塞 .
- 如何在DOS下编译C文件
- 关于CSDN2013博客之星的一些看法
- android------(自动调节的进度条+评级测试)SeekBar和RatingBar
- UVa 10881 - Piotr's Ants - 水题
- HDU 2005
- Iptables下MSS数据调整模块TCPMSS使用
- android 界面跳转遇到的问题
- Ext.get()与Ext.fly()之区别
- nagios告警信息分析
- VC项目配置基础 (VC6.0 和VC2005)
- Visual Leak Detector for Visual C++
- cofs文件系统问题
- 嵌入式C语言编程小知识总结