2 条题解
-
1
参考答案:
#include<iostream> using namespace std; int main() { int y, m, d; scanf("%4d-%2d-%2d", &y, &m, &d); if (d > 2) printf("%d-%02d-%02d\n", y, m, d - 2); else { if (m == 3) { if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) { if (d == 1) printf("%d-%02d-28\n", y, m - 1); else printf("%d-%02d-29\n", y, m - 1); } else { if (d == 1) printf("%d-%02d-27\n", y, m - 1); else printf("%d-%02d-28\n", y, m - 1); } } else if (m == 1) { if (d == 1) printf("%d-12-30\n", y - 1); else printf("%d-12-31\n", y - 1); } else if (m == 7) { if (d == 1) printf("%d-%02d-29\n", y, m - 1); else printf("%d-%02d-30\n", y, m - 1); } else if (m == 8) { if (d == 1) printf("%d-%02d-30\n", y, m - 1); else printf("%d-%02d-31\n", y, m - 1); } else if (m == 5 || m == 10 || m == 12) { if (d == 1) printf("%d-%02d-29\n", y, m - 1); else printf("%d-%02d-30\n", y, m - 1); } else { if (d == 1) printf("%d-%02d-30\n", y, m - 1); else printf("%d-%02d-31\n", y, m - 1); } } return 0; }
-
0
#include<iostream> bool j(int y) { return (y % 4 == 0 && y % 100 != 0) || y % 400 == 0; } void solve(int date[3]) { int they{date[0]}, them{date[1]}, tdby{date[2]}; int m[13] = {29, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; if(tdby - 2 <= 0) { if(j(they) && them == 3) { tdby += m[0] - 2; them = 2; } else if(them == 1) { they--; them = 12; tdby += m[12] - 2; } else { them--; tdby += m[them] - 2; } } else { tdby -= 2; } printf("%d-%02d-%02d", they, them, tdby); } int main() { int date[3]; scanf( "%d-%d-%d", &date[0], &date[1], &date[2] ); solve(date); return 0; }
- 1
信息
- ID
- 45
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 20
- 已通过
- 2
- 上传者