题目1070:今年的第几天?
2015-07-05 17:26
309 查看
题目描述:
输入年、月、日,计算该天是本年的第几天。
输入:
包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。
输出:
输入可能有多组测试数据,对于每一组测试数据,
输出一个整数,代表Input中的年、月、日对应本年的第几天。
样例输入:
样例输出:
做日期型的题目都有相似的策略,将每个日期对应的值,建立一棵hash树,并且没有结点重复,处理相对比较容易
下面代码就是建树过程:
输入年、月、日,计算该天是本年的第几天。
输入:
包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。
输出:
输入可能有多组测试数据,对于每一组测试数据,
输出一个整数,代表Input中的年、月、日对应本年的第几天。
样例输入:
1990 9 20 2000 5 1
样例输出:
263 122
#include <iostream> #include <stdio.h> using namespace std; int dayOfMonth[13][2]={ 0,0, 31,31, 28,29, 31,31, 30,30, 31,31, 30,30, 31,31, 31,31, 30,30, 31,31, 30,30, 31,31 }; int buff[3001][13][32]; int isRunnian(int year){ return year % 400 == 0 ? 1 : (year % 4 == 0 && year % 100 != 0) ? 1 : 0; } struct Date{ int year; int month; int day; void nextDay(){ day++; if(day > dayOfMonth[month][isRunnian(year)]){ day = 1; month++; } if(month > 12){ month = 1; year++; } } }; int main() { Date date; date.year = 1; date.month = 1; date.day = 1; int cnt = 1,tempYear=1; while(date.year < 3001){ // cout << date.year<< " " << date.month << " " << date.day << endl; if(date.year != tempYear){ //cout << tempYear << " " << cnt << endl; tempYear = date.year; cnt = 1; } buff[date.year][date.month][date.day] = cnt; date.nextDay(); cnt++; } int y,m,d; while(scanf("%d%d%d",&y,&m,&d)!=EOF){ printf("%d\n",buff[y][m][d]); } return 0; }
做日期型的题目都有相似的策略,将每个日期对应的值,建立一棵hash树,并且没有结点重复,处理相对比较容易
下面代码就是建树过程:
while(date.year < 3001){ // cout << date.year<< " " << date.month << " " << date.day << endl; if(date.year != tempYear){ //cout << tempYear << " " << cnt << endl; tempYear = date.year; cnt = 1; } buff[date.year][date.month][date.day] = cnt; date.nextDay(); cnt++; }
相关文章推荐
- SOJ.Robot
- How to do research?
- 修改mysql密码出现Access denied for user ''@'localhost' to database 'mysql'
- SQL学习(时间,存储过程,触发器)
- 数据字典
- oracle 中的几个函数AVG (平均) COUNT (计数) MAX (最大值) MIN (最小值) SUM (总合)
- 天下游安装步骤
- Ubuntu12.04编译hadoop2.6.0源码与源码导入windows下的Eclipse查看方法
- do...while(0)的妙用
- 存储器
- 设计模式之工厂
- 百度2013校园笔试题
- 浅谈单调队列、单调栈
- php file_get_contents返回空 无效解决办法
- Reward(拓扑排序)
- 利用贪心的思维对算法剪枝(POJ 2376)
- 技术学习步骤
- 海量数据解决思路之Hash算法
- MFC/VS 2010中对话框控件初始显示模糊,鼠标移动到上面才显示的问题
- 百度研发工程师面试题