1579 - 计算天数
输入年月日,计算该填是本年的第几天。例如1990 年9 月20 日是1990 年的第263 天,
2000 年5 月1 日是2000 年第122 天。(闰年:能被400 正除,或能被4 整除但不能被100
整除。每年1、3、5、7、8、10 为大月)
Input
输入第一行为样例数m,接下来m行每行3个整数分别表示年月日。
Output
输出m行分别表示题目所求。
Examples
Input
2 1990 9 20 2000 5 1
Output
263 122
Hint
闰年:能被400 正除,或能被4 整除但不能被100整除。每年1、3、5、7、8、10 为大月
Solution C
#include <stdio.h> int main(){ int mm; int y,m,d; int sum; int tmp; int num[12] = {0,31,28,31,30,31,30,31,31,30,31,30}; scanf("%d",&mm); while (mm--) { scanf("%d%d%d",&y,&m,&d); sum = d; if (y%400==0||(y%4==0&&y%100!=0)) { num[2] = 29; } else { num[2] = 28; } for (int i = 1;i<m;i++) { sum = sum + num[i]; } printf("%d\n",sum); } }
Solution C++
#include <iostream> #include <cstdio> using namespace std; int month[13]= {0,31,0,31,30,31,30,31,31,30,31,30,31}; int check(int y) { if (y % 100 == 0) return y % 400 == 0; else return y % 4 == 0; } int main() { //freopen("test.in", "r", stdin); //freopen("test.out", "w", stdout); int y, m, d, t; cin >> t; while (t--) { int sum = 0; cin >> y >> m >> d; month[2] = check(y) + 28; for(int i = 1; i < m; i++) sum = sum + month[i]; sum = sum + d; cout << sum << endl; } return 0; }
Hint
闰年:能被400 正除,或能被4 整除但不能被100整除。每年1、3、5、7、8、10 为大月