解题思路:
需要注意的是:润年是每四年润一次,而每四年是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 人评分
点我有惊喜!你懂得!浏览:1274 |
C二级辅导-求偶数和 (C语言代码)浏览:632 |
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:654 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:573 |
拆分位数 (C语言代码)浏览:1361 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:606 |
简单的a+b (C语言代码)浏览:626 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:561 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:1483 |
矩阵乘方 (C语言代码)浏览:1079 |