• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

  • 联系
  • 订阅
  • 管理

View Post

sicily 1791 Philia's Problem

运用蔡勒公式,注意取模用法~~~w = (w%7+7)%7 因为这个WA了好几次

 

#include <iostream>
#include <stdio.h>
using namespace std;

int main()
{
    int y, m, d, c, w;
    int re_d, re_m, re_y;
    int cases;
    int interval;

    int month[13] = {0, 31, 28, 31, 30,31, 30, 31, 31, 30, 31, 30, 31};

    cin >> cases;
    while (cases--)
    {
        cin >> m >> d >> y;
        re_d = d;
        re_m = m;
        re_y = y;
        if (m < 3)
        {
            y--;
            m+=12;
        }

        c = y/100;
        y = y % 100;

        w = y+y/4 + c/4 - 2*c + 26*(m+1)/10 + d-1; //蔡勒公式
        w = ( w % 7 + 7 ) % 7; //注意这里不是mod7 ,考虑到负数取模

        interval = 7- w; 
        re_d += interval;

        if ( (re_y % 400 == 0) || (re_y % 4 == 0 && re_y % 100 != 0))       
            month[2] = 29;
        else
            month[2] = 28;

        if (re_d > month[re_m])
        {
            re_d = re_d - month[re_m];
            re_m++;
            if (re_m > 12)
            {
                re_m = 1;
                re_y++;
            }
        }

        printf("%.2d %.2d %d\n", re_m, re_d, re_y);
    }
    return 0;
}

posted on 2010-12-10 22:44  sysuwhj  阅读(273)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3