hdu 2133 what day it is?
来源:互联网 发布:运行java文件 编辑:程序博客网 时间:2024/05/16 04:44
这道题,我用的是一个公式,也可以不用公式,直接推到也行,1年1月1号是星期一,每个日期都和她进行比较。
公式:
W = [Y-1] + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D;
Y是年份数,D是这一天在这一年中的累积天数,也就是这一天在这一年中是第几天。公式中的[...]均指只取计算结果的整数部分。算出来的W除以7,余数是几就是星期几。如果余数是0,则为星期日.星期是七天一轮回的,7、14、21、28都是7的倍数,但31号特殊除以7 余数是2却不一定是星期二,而要根据前面几天如28号、29号来推算。
注意一下:输入的判断,在这里wa了好久。
#include <iostream>using namespace std;int leap(int y) //ture 为闰年{ if((y%4==0 && y%100!=0) || y%400==0) return 1; return 0; }int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int howday(int y,int m,int d){ int sum(d); if(leap(y))mon[2]=29; else mon[2]=28; for(int i=1;i<m;i++) sum+=mon[i]; return sum;}void print(int n){ if(n==1) cout<<"Monday"<<endl; if(n==2) cout<<"Tuesday"<<endl; if(n==3) cout<<"Wednesday"<<endl; if(n==4) cout<<"Thursday"<<endl; if(n==5) cout<<"Friday"<<endl; if(n==6) cout<<"Saturday"<<endl; if(n==0) cout<<"Sunday"<<endl;}int legal( int y, int m, int d ) { if ( y <= 0 || y >= 10000 || m <= 0 || m >= 13 || d <= 0 || d >= 32 ) return 0; if ( ( m == 2 && ( leap(y) == 0 ) && d >= 29 ) || ( m == 2 && ( leap(y) == 1 ) && d >= 30 ) ) return 0; if ( (m == 4 || m == 6 || m == 9 || m == 11) && d == 31 ) return 0; return 1;}int main(){ int y,m,d; while(cin>>y>>m>>d){ if(!legal(y,m,d)){ cout<<"illegal"<<endl; continue; } int w(0); w=(y-1)+(y-1)/4-(y-1)/100+(y-1)/400+howday(y,m,d); if(d==31&&w%7==2){ w=(w-1)%7; print(w+1);continue; } w=w%7; print(w);}return 0;}
- HDU 2133 - What day is it
- HDU 2133 What day is it
- HDU 2133 What day is it
- hdu 2133 What day is it
- HDU:2133 What day is it
- hdu 2133 what day it is?
- hdu 2133 What day is it
- hdu 2133 What day is it
- HDU 2133 What day is it
- HDU 2133 What day is it
- hdu 2133 What day is it
- hdu 2133 What day is it
- hdu 2133 What day is it
- What day is it 2133
- 杭电Hdu 2133 What day is it
- HDU 2133 What day is it(日期转换)
- hdu 1308 What Day Is It?
- hdoj 2133 What day is it
- VC与YACC、LEX集成
- c++类的大小
- MySQL与Oracle的语法区别对比
- 关于objdump和objcopy的研究
- JS中的弹出窗口
- hdu 2133 what day it is?
- 大学有感
- Java基础入门
- 利用读写锁模拟一个缓存系统
- Reverse Integer
- MyEclipse 安装SVN SVN Connector
- Java基础——多线程
- 将数组a中的n个整数按相反的顺序存放
- 程序设计