解题思路:
使用蔡勒公式计算。蔡勒公式是: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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复