解题思路:

使用蔡勒公式计算。蔡勒公式是: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;

}

点赞(2)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论