题目描述
最近图书馆的工作人员在检查馆藏书目的时候发现,有很多书籍久久没有被借书人归还。于是工作人员决定给这些不负责任的借书人发信件通知他们来图书馆归还书籍并缴纳罚款(会有用吗?)。现在请你为图书馆工作人员编写程序,以计算每个不归还书籍的借书者借书天数。
程序输入说明
第一行输入为三个正整数y m d,分别代表现在的年、月、日;
第二行输入为一个正整数n,代表下面有多少个借书者信息;
下面有n行输入,每行有三个正整数yy mm dd, 代表一个借书者借书的日期(年、月、日)。
年份数据的范围为[1, 9999]
第二行输入为一个正整数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 }