oliverman


私信TA

用户名:oliverman

访问量:5345

签 名:

等  级
排  名 337
经  验 5379
参赛次数 2
文章发表 6
年  龄 38
在职情况 在职
学  校
专  业

  自我简介:

解题思路:

使用蔡勒公式计算。蔡勒公式是:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1,各字母表示的意思网上可以找到。


注意事项:
千千万万不要忘了w小于0的情况,虽然我试了几十组数据没有发现一个w小于0的例子。导致提交了很多次,都是“答案错误”或者是“答案错误18%”。

以下代码是提交多次都没有正确后,一气之下想把每一个数字算出来,供我看的。其实用不着这么冗长的结构的。

参考代码:

while (scanf_s("%d %d %d", &year, &m, &d) == 3)

{

if (m == 1 || m == 2)

{

year = year - 1; m = m + 12;

c1 = year / 1000;

c2 = year / 100 % 10;

y1 = year / 10 % 10;

y2 = year % 10;

c = c1 * 10 + c2;

y = y1 * 10 + y2;

X = (y / 4);

Y = (c / 4);

Z = (26 * (m + 1) / 10);

w = (y + X + Y - 2 * c + Z + d - 1) % 7;

printf("%d %d %d %d %d\n", c, y, X, Y, Z);

if (w < 0) printf("%d", w + 7);

else if (w == 0) printf("7\n");

else printf("%d\n", w);

}

else

{

......

}

}

return 0;

}

 

0.0分

2 人评分

  评论区

  • «
  • »