日期計算
時間限制:3000 ms | 內存限制:65535 KB
難度:1
- 描述
- 如題,輸入一個日期,格式如:2010 10 24 ,判斷這一天是這一年中的第幾天。
- 輸入
- 第一行輸入一個數N(0<N<=100),表示有N組測試數據。後面的N行輸入多組輸入數據,每行的輸入數據都是一個按題目要求格式輸入的日期。
- 輸出
- 每組輸入數據的輸出佔一行,輸出判斷出的天數n
- 樣例輸入
-
3 2000 4 5 2001 5 4 2010 10 24
- 樣例輸出
-
96 124 297
分析:
打2個表,一個每月的天數表map(2月預設28天);另一個記錄除去該月天數,之前的天數之和dp;
則對於輸入的每個日期如果月份≤2,則直接讀表dp再加上本月的天數。
否則判斷閏年平年,如果閏年則天數+1,否則照常。
代碼:
#include<cstdio> int map[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int dp[13]={0}; void fun() { for(int i=2;i<=12;i++) dp[i]=dp[i-1]+map[i-1]; } int run(int n) { if(n%4==0&&n%100||n%400==0) return 1; return 0; } int main() { int T; scanf("%d",&T); fun(); while(T--) { int a,b,c; scanf("%d%d%d",&a,&b,&c); if(b<=2) printf("%d\n",dp[b]+c); else printf("%d\n",dp[b]+c+run(a)); } return 0; }