解题思路:
需要注意的是:润年是每四年润一次,而每四年是365*4+1=1461(包含润年多出来的那一天),而1461*6=8766 1461*7=10227 可以使用多余的去减,也可以使用不足的去加,大大的降低了时间复杂度,主要利用了每四年一个轮回
注意事项:
月份的操作,这里使用的是int month[13],巧妙的利用了数组下标和月份的对应关系,以及后面的求余运算
参考代码:
#include <cstdio>
using namespace std;
int month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int Is_Leap(int year){
if((year%4 == 0 && year%100 != 0) || (year%400 == 0)){
return 1;
}else{
return 0;
}
}
int main(){
int y,m,d;
while(scanf("%d %d %d", &y, &m, &d) != EOF){
y += 6*4;
for(int i = 1; i <= 1234; i++){
d++;
if(Is_Leap(y)){
month[2] = 29;
}else{
month[2] = 28;
}
if(d > month[m]){
d %= month[m];
m++;
}
if(m > 12){
y++;
m = m%12;
}
}
printf("%d-%d-%d\n", y, m, d);
}
return 0;
}
0.0分
2 人评分
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1051 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:508 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:514 |
C语言训练-求PI* (C语言代码)浏览:613 |
【排队买票】 (C语言代码)浏览:899 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:470 |
WU-输出正反三角形 (C++代码)浏览:1018 |
蚂蚁感冒 (C语言代码)浏览:768 |
分糖果 (C语言代码)浏览:911 |
交换Easy (C语言代码)浏览:759 |