1. 程式人生 > >圖書館借書(年,月,日)

圖書館借書(年,月,日)

題目描述 最近圖書館的工作人員在檢查館藏書目的時候發現,有很多書籍久久沒有被借書人歸還。於是工作人員決定給這些不負責任的借書人發信件通知他們來圖書館歸還書籍並繳納罰款(會有用嗎?)。現在請你為圖書館工作人員編寫程式,以計算每個不歸還書籍的借書者借書天數。

程式輸入說明

第一行輸入為三個正整數y m d,分別代表現在的年、月、日;
第二行輸入為一個正整數n,代表下面有多少個借書者資訊;
下面有n行輸入,每行有三個正整數yy mm dd, 代表一個借書者借書的日期(年、月、日)。
年份資料的範圍為[1, 9999]

程式輸出說明

輸出共有n行,每行輸出一個正整數,代表對應的借書者借書天數。

程式輸入樣例

1 1 1
3
1 1 1
1 1 31
1 2 28

程式輸出樣例

0
30
58
 1 //圖書館借書
 2 #include<iostream>
 3 #include<cstdio>
 4
#include<cstring> 5 using namespace std; 6 7 bool run(int year){ 8 if( ((year%4==0)&&(year%100!=0)) || (year%400==0) ) 9 return true; 10 else 11 return false; 12 } 13 14 int solve_day(int year,int month,int day){ 15 int sum = 0; 16 if( run(year) ){ 17 for
( int i = 1; i < month; i++ ){ 18 if( i == 2 ) 19 sum += 29; 20 else if( i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12 ) 21 sum += 31; 22 else 23 sum += 30; 24 } 25 sum += day; 26 } 27 else{ 28 for( int i = 1; i < month; i++ ){ 29 if( i == 2 ) 30 sum += 28; 31 else if( i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12 ) 32 sum += 31; 33 else 34 sum += 30; 35 } 36 sum += day; 37 } 38 return sum; 39 } 40 41 int main(){ 42 int y,m,d,n,yy,mm,dd; 43 cin>>y>>m>>d; 44 cin>>n; 45 while(n--){ 46 int day = 0; 47 cin>>yy>>mm>>dd; 48 if( yy == y ) 49 day = solve_day(yy,mm,dd)-solve_day(y,m,d); 50 else{ 51 for( int i = 1; i < yy-y; i++ ){ 52 if( run(i) ) 53 day += 366; 54 else 55 day += 365; 56 } 57 if( run(y) ) 58 day += 366-solve_day(y,m,d); 59 else 60 day += 365-solve_day(y,m,d); 61 day += solve_day(yy,mm,dd); 62 } 63 cout<<day<<endl; 64 } 65 return 0; 66 }