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“。
样例输入
  1. 1730
  2. 1740
  3. 1750
  4. 1751
  5. -1
样例输出
  1. 2004-09-26 Sunday
  2. 2004-10-06 Wednesday
  3. 2004-10-16 Saturday
  4. 2004-10-17 Sunday
提示
2000.1.1. 是星期六
这题目有好几种思路可解决,只是我从天数开始递减,得到年月日,结果能通过一部分,没找到问题出在哪了。
贴了两个代码。还比较好理解:
代码:
第一个代码是我自己写的,之前提交了一个没通过,还以为这题有毒,还有,我把之前的月份计算改为下标递增求解,测试数据结果都是一样的,但都是AC 不了,也没找出问题。
  1. #include<iostream>
  2. #include<stdio.h>
  3. using namespace std;
  4. int days_of_year[]={,};
  5. int days_of_month[]={,,,,,,,,,,,,/**/,,,,,,,,,,,};
  6. char week[][]={"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};
  7. int isleapyear(int year)
  8. {
  9. if(year%==||(year%==&&year%!=))
  10. return ;
  11. else
  12. return ;
  13. }
  14. int main()
  15. {
  16. int m_days;//距离天数
  17. int weekday;//定义标记当前是星期几
  18.  
  19. while(true)
  20. {
  21. scanf("%d",&m_days);
  22. weekday=m_days%;
  23. int start_year=,start_month=,start_day=;//定义当前的年月日,随着天数的增加,依次递增,最后达到所要的年份月份日期
  24. if(m_days==-)
  25. {
  26. break;
  27. }
  28. weekday=m_days%;
  29. while(m_days>=days_of_year[isleapyear(start_year)])//计算年
  30. {
  31. m_days-=days_of_year[isleapyear(start_year)];
  32. start_year++;
  33. }
  34. while(m_days>=days_of_month[isleapyear(start_year)*+start_month-])//计算月
  35. {
  36. m_days-=days_of_month[isleapyear(start_year)*+start_month-];
  37. start_month++;
  38. }
  39. start_day=start_day+m_days;//计算天,这个是年月计算后剩下的天数
  40. printf("%d-%02d-%02d %s\n",start_year,start_month,start_day,week[weekday]);
  41. }
  42.  
  43. return ;
  44. }
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <cstring>
  5.  
  6. using namespace std;
  7.  
  8. int days_of_year[] = {,};
  9. int days_of_month[] = {,,,,,,,,,,,,/**/,,,,,,,,,,,};
  10. char days_of_week[][] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ,"Saturday"};
  11.  
  12. int main()
  13. {
  14. int day;
  15. int start_year,start_month,start_day,start_week;
  16. int is_leap_year;
  17. while(scanf("%d",&day),day!=-)
  18. {
  19. start_year = ;
  20. start_month = ;
  21. start_day = ;
  22. start_week = ;
  23.  
  24. start_week = (start_week + day) % ;
  25.  
  26. //判断是否闰年
  27. if(start_year % == && !(start_year % == && start_year % != ))
  28. {
  29. is_leap_year = ;
  30. }
  31. else
  32. {
  33. is_leap_year = ;
  34. }
  35.  
  36. while(day >= days_of_year[is_leap_year])
  37. {
  38. start_year ++;
  39. day -= days_of_year[is_leap_year];
  40.  
  41. //判断是否闰年
  42. if(start_year % == && !(start_year % == && start_year % != ))
  43. {
  44. is_leap_year = ;
  45. }
  46. else
  47. {
  48. is_leap_year = ;
  49. }
  50. }
  51.  
  52. while(day >= days_of_month[is_leap_year* + start_month - ])
  53. {
  54. day -= days_of_month[is_leap_year* + start_month - ];
  55. start_month ++;
  56. }
  57.  
  58. start_day += day;
  59.  
  60. printf("%d-%02d-%02d %s\n",start_year,start_month,start_day,days_of_week[start_week]);
  61. }
  62. return ;
  63. }

代码二:

  1. #include <stdio.h>
  2. int judgeyear(int);
  3. int main()
  4. {
  5. long days;
  6. int i,j;
  7. int mon[][]={{,,,,,,,,,,,,},{,,,,,,,,,,,,}};
  8. int year[]={,};
  9. char day[][]={"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};
  10. int dow;
  11. while(scanf("%ld",&days),days!=-)
  12. {
  13. dow=days%;
  14. days+=;
  15. for(i= ; (days-year[judgeyear(i)])> ; i++)
  16. days-=year[judgeyear(i)];
  17. int t=judgeyear(i);
  18. for(j= ; (days-mon[t][j])> ; j++)
  19. days-=mon[t][j];
  20. printf("%d-%02d-%02ld %s\n",i,j,days,day[dow]);
  21. }
  22. return ;
  23. }
  24.  
  25. int judgeyear(int a)
  26. {
  27. if(a%!= || (a% == && a% !=))
  28. return ;
  29. else
  30. return ;
  31. }

2964:日历问题-poj的更多相关文章

  1. poj 1008:Maya Calendar(模拟题,玛雅日历转换)

    Maya Calendar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 64795   Accepted: 19978 D ...

  2. HOJ 2133&POJ 2964 Tourist(动态规划)

    Tourist Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1503 Accepted: 617 Description A ...

  3. POJ 1008 Maya Calendar

    链接:http://poj.org/problem?id=1008 Maya Calendar Time Limit: 1000MS   Memory Limit: 10000K Total Subm ...

  4. 搜索+剪枝 POJ 1416 Shredding Company

    POJ 1416 Shredding Company Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5231   Accep ...

  5. 【踩坑速记】开源日历控件,顺便全面解析开源库打包发布到Bintray/Jcenter全过程(新),让开源更简单~

    一.写在前面 自使用android studio开始,就被它独特的依赖方式:compile 'com.android.support:appcompat-v7:25.0.1'所深深吸引,自从有了它,麻 ...

  6. 开源一款简单清爽的日历组件,JavaScript版的

    源码会在最后给出地址,需要的朋友自己去下载.最近项目需要做一个日程安排的功能,就是点击日历的某一天弹出一个录入页面,填完信息后保存当天的日程安排.有日程的日期会有不同的标记(比如加一个背景色啥的).网 ...

  7. FullCalendar日历插件说明文档

    FullCalendar提供了丰富的属性设置和方法调用,开发者可以根据FullCalendar提供的API快速完成一个日历日程的开发,本文将FullCalendar的常用属性和方法.回调函数等整理成中 ...

  8. 被逼着写的jquery工作日管理日历插件

    因为工作原因,在我刚进入新公司之后,立马要求让我做一个jquery的插件demo.我的天,我面试的可是.net工程师啊.虽然以前接触过js,jquery,但也只是接触过一丢丢啊,没办法,只好硬着头皮上 ...

  9. java基础练习 字符串,控制流,日历,日期等

    1,对基本控制流程的一些练习 package org.base.practice3; import org.junit.Test; /** * Created with IntelliJ IDEA. ...

随机推荐

  1. PHP中header的作用

    1.跳转: //若等待时间为0,则与header("location:")等效.  //Header("Location:http://localhost//sessio ...

  2. JAVA提高七:类加载器

    今天我们学习类加载器,关于类加载器其实和JVM有很大关系,在这里这篇文章只是简单的介绍下类加载器,后面学习到JVM的时候还会详细讲到类加载器,本文分为下面几个小节讲解: 一.认识类加载器 1.什么是类 ...

  3. 【转】各种图(流程图,思维导图,UML,拓扑图,ER图)简介

    原文地址:各种图(流程图,思维导图,UML,拓扑图,ER图)简介 流程图 1.定义:流程图是对过程.算法.流程的一种图像表示,在技术设计.交流及商业简报等领域有广泛的应用. 2.案例 3.计算机语言只 ...

  4. typeof、constructor和instance

    在JavaScript中,我们经常使用typeof来判断一个变量的类型,使用格式为:typeof(data)或typeof data.typeof返回的数据类型有六种:number.string.bo ...

  5. 【20171025晚】alert(1) to win 第五题 正则表达式过滤

    吃过晚饭,再练一题 第五题 function escape(s) { var text = s.replace(/</g, '<').replace(/"/g, '"' ...

  6. babel从入门到入门

    babel从入门到入门 来源 http://www.cnblogs.com/gg1234/p/7168750.html 博客讲解内容如下: 1.babel是什么 2.javascript制作规范 3. ...

  7. Connections between cities

    Connections between cities Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...

  8. HTML5与搜索引擎优化[转载]

    原文:http://lusongsong.com/reed/398.html 我觉得HTML5的兴起完全是因为iPhone和iPad,自从Adobe停止开发flash.Android4.0不支持fla ...

  9. 如何成为一个javascript高手【转载】

      原文网址: http://www.cnblogs.com/keva/p/how-to-become-a-javascript-badass.html 英文网址:http://www.clientc ...

  10. R-CNN论文翻译——用于精确物体定位和语义分割的丰富特征层次结构

    原文地址 我对深度学习应用于物体检测的开山之作R-CNN的论文进行了主要部分的翻译工作,R-CNN通过引入CNN让物体检测的性能水平上升了一个档次,但该文的想法比较自然原始,估计作者在写作的过程中已经 ...