HDU2133(日期计算)
来源:互联网 发布:tfidf java高效 编辑:程序博客网 时间:2024/05/20 18:48
What day is it
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2921 Accepted Submission(s): 858
Problem Description
Today is Saturday, 17th Nov,2007. Now, if i tell you a date, can you tell me what day it is ?
Input
There are multiply cases.
One line is one case.
There are three integers, year(0<year<10000), month(0<=month<13), day(0<=day<32).
One line is one case.
There are three integers, year(0<year<10000), month(0<=month<13), day(0<=day<32).
Output
Output one line.
if the date is illegal, you should output "illegal". Or, you should output what day it is.
if the date is illegal, you should output "illegal". Or, you should output what day it is.
Sample Input
2007 11 17
Sample Output
Saturday#include<iostream>#include<cstdio>using namespace std;typedef struct{int year,mon,day;}Yer;int month[13]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; bool is_leap(int year){if((year%4==0&&year%100)||(year%400==0))return true;return false;}bool is_legal(Yer cur){ if(cur.year<= 0||cur.year>=10000||cur.mon<=0||cur.mon>=13||cur.day<=0||cur.day>=32) return false; if((!is_leap(cur.year)&&cur.day<=month[cur.mon])||(cur.mon==2&&is_leap(cur.year)&&cur.day<=month[cur.mon]+1))return true;else return false;}bool is_pre(Yer a,Yer b){if(a.year<b.year)return true;else if(a.year==b.year&&a.mon<b.mon)return true;else if(a.year==b.year&&a.mon==b.mon&&a.day<b.day)return true;else areturn false;}void print(bool flag,int sum){sum=sum%7;if(!flag)sum=7-sum;sum=sum%7;switch(sum){case 0:printf("Saturday\n");break;case 2:printf("Monday\n");break;case 3:printf("Tuesday\n");break;case 4:printf("Wednesday\n");break; case 5:printf("Thursday\n");break;case 6:printf("Friday\n");break;case 1:printf("Sunday\n");break;}return ;}void calculate(bool flag,Yer a,Yer b){int i,sum;int ta,tb;sum=0;ta=0;int taa=365;for(i=1;i<a.mon;i++){if(i==2&&is_leap(a.year)){ta+=1;taa=366;}ta+=month[i];}ta+=a.day;tb=0;for(i=1;i<b.mon;i++){if(i==2&&is_leap(b.year)){tb+=1;}tb+=month[i];}tb+=b.day;if(a.year==b.year){sum=tb-ta;print(flag,sum);return ;}for(i=a.year+1;i<b.year;i++){if(is_leap(i))sum+=1;sum+=365;}sum=sum+taa-ta+tb;print(flag,sum);return;}int main(){Yer cur,fixed;fixed.year=2007;fixed.mon=11;fixed.day=17;while(~scanf("%d%d%d",&cur.year,&cur.mon,&cur.day)){if(!is_legal(cur)){printf("illegal\n");continue;}if(is_pre(fixed,cur))calculate(true,fixed,cur);else calculate(false,cur,fixed);}return 0;}
- HDU2133(日期计算)
- hdu2133
- HDU2133 二分
- 日期计算
- 计算日期
- 日期计算
- 日期计算
- 日期计算
- 日期计算
- 日期计算
- 计算日期
- 日期计算
- 日期计算
- 日期计算
- 计算日期
- 日期计算
- 日期计算
- 日期计算
- Ruby On Rails 开发学习笔记(一)
- ASP.NET生成excel失败(异常来自 HRESULT:0x800A03EC )
- 黑马程序员_IO流(二)
- Android:layout_weight
- IOS设计模式之MVC模式
- HDU2133(日期计算)
- Java总结(7)集合
- Ajax:Cross-Origin Resource Sharing
- iOS开发工具Xcode史上最全快捷键
- from taotesting
- 黑马程序员_IO流(一)
- Unity does not contain a definition for "controller"
- 64位winserver2008环境,ASP.Net程序不能访问Oracle数据库(安装的32位Oracle客户端)
- win2008添加角色-应用程序服务器,报错对应