• 图书馆借书(年,月,日)


    题目描述
    最近图书馆的工作人员在检查馆藏书目的时候发现,有很多书籍久久没有被借书人归还。于是工作人员决定给这些不负责任的借书人发信件通知他们来图书馆归还书籍并缴纳罚款(会有用吗?)。现在请你为图书馆工作人员编写程序,以计算每个不归还书籍的借书者借书天数。

    程序输入说明

    第一行输入为三个正整数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 }

  • 相关阅读:
    Log4Net 自定义级别,分别记录到不同的文件中
    带着忧伤,寻觅快乐
    程序员进阶学习书籍
    PHP编码技巧
    PHP精度问题
    Laravel5 构造器高级查询条件写法
    正则表达式 /i /g /m /ig /gi
    MySQL运算符的优先级
    PHP获取当前页面完整路径URL
    使用ssl模块配置同时支持http和https并存
  • 原文地址:https://www.cnblogs.com/geziyu/p/10106250.html
Copyright © 2020-2023  润新知