`
googlelc
  • 浏览: 56610 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ACM之-求某天是星期几

 
阅读更多

/* 算法如下:   
基姆拉尔森计算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7  


在公式中d表示日期中的日数+1,m表示月份数,y表示年数。
  
注意1:在公式中有个与其他公式不同的地方:   
把一月和二月看成是上一年的十三月和十四月,
例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。

注意2:在大多数天主教国家的日历中,在1752年没有9.3-9.13,在这一年的日历中9月2号
后面直接就是9月14号,所以在计算某天是星期几的算法中要把这一特殊情况考虑在内。

如果在在1752年9月3日之前
week = (d+2*m+3*(m+1)/5+y+y/4+5)%7;
如果不是
week = (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;

*/

#include<iostream>
#include<string>
using namespace std;
int CaculateWeekDay(int y,int m,int d){
    int a;
     // 1月2月当作前一年的13,14月
      if(m==1||m==2){
                     m += 12;
                     y--;
                     }
      //判断是否在1752年9月3号之前
      if(y<1752||(y==1752&&m<9)||(y==1752&&m==9&&d<3)){
               a =  (d+2*m+3*(m+1)/5+y+y/4+5)%7;                                       
                                                       } 
       else {
           a = (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
            } 
       return a;                                                    
      }
 const char *name[]={"monday","tuesday","wednesday","thursday"
,"friday","saturday","sunday"}; 
int main(){
    int y,m,d;
    while( cin >> y >> m >> d){
            
            cout << name[CaculateWeekDay(y,m,d)] << endl;
           }
    system("pause");
    }
 
 


分享到:
评论

相关推荐

    ACM函数整理_ACM模板

    11. 求某一天星期几:通过计算日期与基准日期的差值,结合蔡勒公式,可以确定指定日期是星期几。 12. 卡特兰 (Catalan) 数列:该数列在组合数学中有多种生成函数和递推关系,可以用来解决诸如括号匹配等问题。 13....

    ACM模板代码库

    - 求解星期几的问题。 - 树状数组和左偏树。 - Trie树的两种实现方式,一种是K叉树,另一种是左儿子右兄弟表示法。 - 后缀数组的两种构建方法。 - RMQ(Range Minimum/Maximum Query)问题的不同解决算法。 - LCA...

    ACM算法模板库各种常用的算法模板

    该算法可以计算某一天是星期几,用于解决日期计算中的某些问题。ACM 算法模板库中提供了相关的算法模板,用于实现求某一天星期几。 ACM 算法模板库提供了各种常用的算法模板,为算法爱好者和竞赛选手提供了便捷的...

    ACM图论数据结构常见模板

    图论 3 连通性 3 强连通分量 3 割点/割边 7 点/边双联通 9 最短路 && 查分约束 11 Dijkstra 11 SPFA 13 Floyd_Wallshall 14 次短路 15 查分约束 16 ...求某天是星期几 72 扩栈 73 JAVA 73 builtin函数 74

    ACM模版代码(已验证)

    求某一天星期几** - **描述**:根据日期计算出具体是星期几。 - **应用**:日历功能、时间管理等领域。 **3. 求排列组合数** - **描述**:计算特定条件下的排列组合数。 - **应用**:概率论、组合数学等领域。...

    ACM/ICPC常用算法的代码库(吉林大学版,强烈推荐)

    - **求某天是星期几**:根据给定日期计算出是星期几。 - **左偏树合并复杂度O(LOGN)**:一种平衡二叉查找树,支持高效合并操作。 - **树状数组**:也称作二叉索引树,用于高效查询和更新数值。 - **二维树状数组**:...

    acm模拟题c语言编程题

    1. **日期计算**:涉及到计算某一天是一周中的第几天,这需要理解如何计算从年初到这一天总共经过了多少天,再通过取模运算得到星期几。 - **非闰年计算**:对于非闰年,可以预设每个月的天数,并加上年份的天数...

    ACM常用函数

    13. 求某一天星期几:实现了某一天星期几的计算,使用了 Zeller 公式。 字符串处理 1. 字符串替换:实现了字符串替换的计算,使用了字符串操作。 2. 字符串查找:实现了字符串查找的计算,使用了字符串操作。 3. ...

    吉大 各种基本ACM必备算法基础

    ##### 求某天是星期几 可以通过Zeller公式或其他类似的方法来计算某一天是星期几。 ##### 左偏树合并复杂度O(logN) 左偏树是一种自平衡二叉查找树,通过旋转操作来保持树的平衡,从而确保合并操作的时间复杂度为O...

    ACM小组内部预定函数(详细)

    9. **求某一天星期几**:可能需要实现日期处理算法,如蔡勒公式。 **字符串处理** 1. **字符串替换**:通过查找并替换字符串中的特定子串。 2. **字符串查找**:找到字符串中目标子串的位置。 3. **字符串截取**...

    acm资料(比较常用的算法实现代码)

    11. **求某一天星期几**:通常使用蔡勒公式,根据日期和年份计算出对应的星期。 **字符串处理** 1. **字符串替换**:涉及到字符串的遍历和字符替换。 2. **字符串查找**:可以使用KMP算法或Boyer-Moore算法等高效...

Global site tag (gtag.js) - Google Analytics