2964:日历问题-poj
2964:日历问题
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- 在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。例如:1700, 1800, 1900 和 2100 不是闰年,而 1600, 2000 和 2400是闰年。 给定从公元2000年1月1日开始逝去的天数,你的任务是给出这一天是哪年哪月哪日星期几。
- 输入
- 输入包含若干行,每行包含一个正整数,表示从2000年1月1日开始逝去的天数。输入最后一行是−1, 不必处理。可以假设结果的年份不会超过9999。
- 输出
- 对每个测试样例,输出一行,该行包含对应的日期和星期几。格式为“YYYY-MM-DD DayOfWeek”, 其中 “DayOfWeek” 必须是下面中的一个: "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" 或 "Saturday“。
- 样例输入
-
- 1730
- 1740
- 1750
- 1751
- -1
- 1730
- 样例输出
-
- 2004-09-26 Sunday
- 2004-10-06 Wednesday
- 2004-10-16 Saturday
- 2004-10-17 Sunday
- 2004-09-26 Sunday
- 提示
- 2000.1.1. 是星期六
- 这题目有好几种思路可解决,只是我从天数开始递减,得到年月日,结果能通过一部分,没找到问题出在哪了。
- 贴了两个代码。还比较好理解:
- 代码:
- 第一个代码是我自己写的,之前提交了一个没通过,还以为这题有毒,还有,我把之前的月份计算改为下标递增求解,测试数据结果都是一样的,但都是AC 不了,也没找出问题。
-
- #include<iostream>
- #include<stdio.h>
- using namespace std;
- int days_of_year[]={,};
- int days_of_month[]={,,,,,,,,,,,,/**/,,,,,,,,,,,};
- char week[][]={"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};
- int isleapyear(int year)
- {
- if(year%==||(year%==&&year%!=))
- return ;
- else
- return ;
- }
- int main()
- {
- int m_days;//距离天数
- int weekday;//定义标记当前是星期几
- while(true)
- {
- scanf("%d",&m_days);
- weekday=m_days%;
- int start_year=,start_month=,start_day=;//定义当前的年月日,随着天数的增加,依次递增,最后达到所要的年份月份日期
- if(m_days==-)
- {
- break;
- }
- weekday=m_days%;
- while(m_days>=days_of_year[isleapyear(start_year)])//计算年
- {
- m_days-=days_of_year[isleapyear(start_year)];
- start_year++;
- }
- while(m_days>=days_of_month[isleapyear(start_year)*+start_month-])//计算月
- {
- m_days-=days_of_month[isleapyear(start_year)*+start_month-];
- start_month++;
- }
- start_day=start_day+m_days;//计算天,这个是年月计算后剩下的天数
- printf("%d-%02d-%02d %s\n",start_year,start_month,start_day,week[weekday]);
- }
- return ;
- }
- #include<iostream>
-
- #include <iostream>
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- using namespace std;
- int days_of_year[] = {,};
- int days_of_month[] = {,,,,,,,,,,,,/**/,,,,,,,,,,,};
- char days_of_week[][] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ,"Saturday"};
- int main()
- {
- int day;
- int start_year,start_month,start_day,start_week;
- int is_leap_year;
- while(scanf("%d",&day),day!=-)
- {
- start_year = ;
- start_month = ;
- start_day = ;
- start_week = ;
- start_week = (start_week + day) % ;
- //判断是否闰年
- if(start_year % == && !(start_year % == && start_year % != ))
- {
- is_leap_year = ;
- }
- else
- {
- is_leap_year = ;
- }
- while(day >= days_of_year[is_leap_year])
- {
- start_year ++;
- day -= days_of_year[is_leap_year];
- //判断是否闰年
- if(start_year % == && !(start_year % == && start_year % != ))
- {
- is_leap_year = ;
- }
- else
- {
- is_leap_year = ;
- }
- }
- while(day >= days_of_month[is_leap_year* + start_month - ])
- {
- day -= days_of_month[is_leap_year* + start_month - ];
- start_month ++;
- }
- start_day += day;
- printf("%d-%02d-%02d %s\n",start_year,start_month,start_day,days_of_week[start_week]);
- }
- return ;
- }
代码二:
- #include <stdio.h>
- int judgeyear(int);
- int main()
- {
- long days;
- int i,j;
- int mon[][]={{,,,,,,,,,,,,},{,,,,,,,,,,,,}};
- int year[]={,};
- char day[][]={"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};
- int dow;
- while(scanf("%ld",&days),days!=-)
- {
- dow=days%;
- days+=;
- for(i= ; (days-year[judgeyear(i)])> ; i++)
- days-=year[judgeyear(i)];
- int t=judgeyear(i);
- for(j= ; (days-mon[t][j])> ; j++)
- days-=mon[t][j];
- printf("%d-%02d-%02ld %s\n",i,j,days,day[dow]);
- }
- return ;
- }
- int judgeyear(int a)
- {
- if(a%!= || (a% == && a% !=))
- return ;
- else
- return ;
- }
- #include <iostream>
2964:日历问题-poj的更多相关文章
- poj 1008:Maya Calendar(模拟题,玛雅日历转换)
Maya Calendar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 64795 Accepted: 19978 D ...
- HOJ 2133&POJ 2964 Tourist(动态规划)
Tourist Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1503 Accepted: 617 Description A ...
- POJ 1008 Maya Calendar
链接:http://poj.org/problem?id=1008 Maya Calendar Time Limit: 1000MS Memory Limit: 10000K Total Subm ...
- 搜索+剪枝 POJ 1416 Shredding Company
POJ 1416 Shredding Company Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5231 Accep ...
- 【踩坑速记】开源日历控件,顺便全面解析开源库打包发布到Bintray/Jcenter全过程(新),让开源更简单~
一.写在前面 自使用android studio开始,就被它独特的依赖方式:compile 'com.android.support:appcompat-v7:25.0.1'所深深吸引,自从有了它,麻 ...
- 开源一款简单清爽的日历组件,JavaScript版的
源码会在最后给出地址,需要的朋友自己去下载.最近项目需要做一个日程安排的功能,就是点击日历的某一天弹出一个录入页面,填完信息后保存当天的日程安排.有日程的日期会有不同的标记(比如加一个背景色啥的).网 ...
- FullCalendar日历插件说明文档
FullCalendar提供了丰富的属性设置和方法调用,开发者可以根据FullCalendar提供的API快速完成一个日历日程的开发,本文将FullCalendar的常用属性和方法.回调函数等整理成中 ...
- 被逼着写的jquery工作日管理日历插件
因为工作原因,在我刚进入新公司之后,立马要求让我做一个jquery的插件demo.我的天,我面试的可是.net工程师啊.虽然以前接触过js,jquery,但也只是接触过一丢丢啊,没办法,只好硬着头皮上 ...
- java基础练习 字符串,控制流,日历,日期等
1,对基本控制流程的一些练习 package org.base.practice3; import org.junit.Test; /** * Created with IntelliJ IDEA. ...
随机推荐
- PHP中header的作用
1.跳转: //若等待时间为0,则与header("location:")等效. //Header("Location:http://localhost//sessio ...
- JAVA提高七:类加载器
今天我们学习类加载器,关于类加载器其实和JVM有很大关系,在这里这篇文章只是简单的介绍下类加载器,后面学习到JVM的时候还会详细讲到类加载器,本文分为下面几个小节讲解: 一.认识类加载器 1.什么是类 ...
- 【转】各种图(流程图,思维导图,UML,拓扑图,ER图)简介
原文地址:各种图(流程图,思维导图,UML,拓扑图,ER图)简介 流程图 1.定义:流程图是对过程.算法.流程的一种图像表示,在技术设计.交流及商业简报等领域有广泛的应用. 2.案例 3.计算机语言只 ...
- typeof、constructor和instance
在JavaScript中,我们经常使用typeof来判断一个变量的类型,使用格式为:typeof(data)或typeof data.typeof返回的数据类型有六种:number.string.bo ...
- 【20171025晚】alert(1) to win 第五题 正则表达式过滤
吃过晚饭,再练一题 第五题 function escape(s) { var text = s.replace(/</g, '<').replace(/"/g, '"' ...
- babel从入门到入门
babel从入门到入门 来源 http://www.cnblogs.com/gg1234/p/7168750.html 博客讲解内容如下: 1.babel是什么 2.javascript制作规范 3. ...
- Connections between cities
Connections between cities Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
- HTML5与搜索引擎优化[转载]
原文:http://lusongsong.com/reed/398.html 我觉得HTML5的兴起完全是因为iPhone和iPad,自从Adobe停止开发flash.Android4.0不支持fla ...
- 如何成为一个javascript高手【转载】
原文网址: http://www.cnblogs.com/keva/p/how-to-become-a-javascript-badass.html 英文网址:http://www.clientc ...
- R-CNN论文翻译——用于精确物体定位和语义分割的丰富特征层次结构
原文地址 我对深度学习应用于物体检测的开山之作R-CNN的论文进行了主要部分的翻译工作,R-CNN通过引入CNN让物体检测的性能水平上升了一个档次,但该文的想法比较自然原始,估计作者在写作的过程中已经 ...