2018_1_25_What Day Is It_公式
2018-01-25 21:21
393 查看
https://vjudge.net/problem/UVA-602
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<cstring>
#include<fstream>
using namespace std;
const char wstr[][20]={
"Sunday","Monday","Tuesday",
"Wednesday","Thursday","Friday","Saturday"
};
const char mstr[][20]={
"","January","February","March","April","May","June","July",
"August","September","October","November","December"
};
bool isleap(int year,bool old=false){
if(old)return year%4==0?true:false;
return (year%100==0?year%400==0:year%4==0);
}
int days_of_month(int month,int year,int leap){
if(month==2)return leap?29:28;
int d;
switch(month){
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
d=31;break;
default:d=30;
}
return d;
}
int days_of_year(int year,bool old){
return isleap(year,old)?356:355;
}
bool valid(int month,int day,int year,bool old){
if(year<0)return false;
if(month<0||month>12)return false;
if(day<1||day>days_of_month(month,year,isleap(year,old))){
return false;
}
if(year==1752&&month==9&&3<=day&&day<=13)return false;
return true;
}
bool isold(int month,int day,int year){
return year<1752||(year==1752&&month<9)||
(year==1752&&month==9&&day<=2);
}
int whatday(int d,int m,int y){
int ans;
if(m==1||m==2)m+=12,y--;
if((y<1752)||(y==1752&&m<9)||(y==1752&&m==9&&d<3))
ans=(d+2*m+3*(m+1)/5+y+y/4+5)%7;
else
ans=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
return (ans+1)%7;
}
ofstream out;
int main(){
int month,year,day;
while(cin>>month>>day>>year){
if(!month&&!day&&!year)break;
bool old=isold(month,day,year);
if(!valid(month,day,year,old)){
printf("%d/%d/%d is an invalid date.\n",month,day,year);
}else{
int week=whatday(day,month,year);
printf("%s %d, %d is a %s\n",mstr[month],day,year,wstr[week]);
}
}
return 0;
}
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<cstring>
#include<fstream>
using namespace std;
const char wstr[][20]={
"Sunday","Monday","Tuesday",
"Wednesday","Thursday","Friday","Saturday"
};
const char mstr[][20]={
"","January","February","March","April","May","June","July",
"August","September","October","November","December"
};
bool isleap(int year,bool old=false){
if(old)return year%4==0?true:false;
return (year%100==0?year%400==0:year%4==0);
}
int days_of_month(int month,int year,int leap){
if(month==2)return leap?29:28;
int d;
switch(month){
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
d=31;break;
default:d=30;
}
return d;
}
int days_of_year(int year,bool old){
return isleap(year,old)?356:355;
}
bool valid(int month,int day,int year,bool old){
if(year<0)return false;
if(month<0||month>12)return false;
if(day<1||day>days_of_month(month,year,isleap(year,old))){
return false;
}
if(year==1752&&month==9&&3<=day&&day<=13)return false;
return true;
}
bool isold(int month,int day,int year){
return year<1752||(year==1752&&month<9)||
(year==1752&&month==9&&day<=2);
}
int whatday(int d,int m,int y){
int ans;
if(m==1||m==2)m+=12,y--;
if((y<1752)||(y==1752&&m<9)||(y==1752&&m==9&&d<3))
ans=(d+2*m+3*(m+1)/5+y+y/4+5)%7;
else
ans=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
return (ans+1)%7;
}
ofstream out;
int main(){
int month,year,day;
while(cin>>month>>day>>year){
if(!month&&!day&&!year)break;
bool old=isold(month,day,year);
if(!valid(month,day,year,old)){
printf("%d/%d/%d is an invalid date.\n",month,day,year);
}else{
int week=whatday(day,month,year);
printf("%s %d, %d is a %s\n",mstr[month],day,year,wstr[week]);
}
}
return 0;
}
相关文章推荐
- (直接存取类线性表4.1.2)UVA 602 - What Day Is It?(数组的应用---日期系统的转换)
- What day is it(逻辑问题)
- ZOJ1256 UVA602 UVALive5474 What Day Is It?【日期】
- 606第九周周三赛 E - What day is it今天星期几
- hdu 1308 What Day Is It? (算星期几)
- HDU2133 What day is it【水题】
- HDU2133:What day is it
- HDU 2133 What day is it(日期转换)
- HDOJ 2133 What day is it
- HDU 2133 - What day is it
- HDU 2133 What day is it
- hdu2133: What day is it
- what is love -- google say it everyday
- HDOJ(HDU) 2133 What day is it(认识下Java的Calendar类---日期类)
- What day is it(1246)
- hdu 1308 What Day Is It?
- hdu1308 What Day Is It
- HDOJ(HDU) 2133 What day is it(认识下Java的Calendar类---日期类)
- hdu 2133 what day it is?
- What Day Is It?(模拟)