hdu 2133

Posted mifankai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 2133相关的知识,希望对你有一定的参考价值。

蔡勒公式的应用
 
1582/10/4之后时
W=[C/4]-2C+y+[y/4]+[13*(M+1)/5]+d-1
1582/10/4之前时
w=y+[y/4]+[c/4]-2c+[13(m+1)/5]+d+2

w:星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
c:世纪减1(年份前两位数)
y:年(后两位数)
m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,
比如2003年1月1日要看作2002年的13月1日来计算)
d:日
(测试数据有点水)
#include<cstdio>
#include<string>
using namespace std;

int year, month, day;

string ans[7] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
bool m[] = {false, true, false, true, false, true, false, true, true, false, true, false, true};

int main()
{    
    int sum = 0;
    while(~scanf("%d%d%d", &year, &month, &day))
    { 
        if((year == 0 || month == 0 || day == 0) || (month==2 && day>29) || (!m[month]&&day == 31) || (!((year%4==0 && year%100!=0) || year%400==0) && month==2 && day==29) ){
            puts("illegal");
            continue;
        }
        if(month < 3){
            year -= 1;
            month += 12;
        }
        int c = year/100 , y = year % 100;
        int w = c/4 - 2*c + y/4 + y + (26*(month+1)/10) + day -1;
        
        cout<<ans[(w%7+7)%7]<<endl;
    }
    return 0;

}

 

 

以上是关于hdu 2133的主要内容,如果未能解决你的问题,请参考以下文章

单目标优化求解基于matlab蒲公英算法求解单目标优化问题含Matlab源码 2133期

C++ python 扩展数组大小问题 (C2133)

ZJNU 2133 - 认亲大会

HDU4057 Rescue the Rabbit(AC自动机+状压DP)

HDU3247 Resource Archiver(AC自动机+BFS+DP)

BZOJ 2133 切割(树形DP,树上背包)大概是本题全网第一篇题解 >_<BZOJ 修复工程