描述
输入年、月、日,计算该天是本年的第几天。
输入描述:
包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。
输出描述:
输入可能有多组测试数据,对于每一组测试数据, 输出一个整数,代表Input中的年、月、日对应本年的第几天。
示例1
输入: 1990 9 20 2000 5 1 输出: 263 122
知识点: 暴力求解 模拟 日期问题
AC代码: 可以选择分支结构来判断求解,但这里采用数组存储来进行预处理,使得真正处理数据时,只需要O(1)的时间复杂度。(预处理是以空间换时间的常见手段。)
#includeusing namespace std; int isleap(int Y) { if(((Y % 4 == 0) && (Y % 100 != 0)) || (Y % 400 == 0)) { return 1; } return 0; } int main() { // 预处理 int month[2][13]={{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}}; int Y, M, D; while(cin >> Y >> M >> D) { int count = 0; int year = isleap(Y); for (int i = 0; i < M; i++) { count += month[year][i]; } count += D; cout << count << endl; } return 0; }



