zoukankan      html  css  js  c++  java
  • 做题记录--day41

    《算法笔记》3.4小节——入门模拟->日期处理

    D无难度,注意格式是yyyy-mm-dd,年也是要补足的,样例里面没有提醒但是自己要注意啊!!

    #include<stdio.h>
    int month[13][2]={0,0,31,31,28,29,31,31,30,30,31,31,30,30,31,31,31,31,30,30,31,31,30,30,31,31};
    bool isrun(int year)
    {
        if((year%4==0 && year%100!=0) || year%400==0)
            return true;
        return false;
    }
    int main()
    {
        int y,n;
        while(scanf("%d %d",&y,&n)!=EOF)
        {
            int i=1;
            while(n-month[i][isrun(y)]>0)
            {
                n=n-month[i][isrun(y)];
                i++;
                if(i==13)
                {
                    i=1;
                    y++;
                }
            }
            printf("%04d-%02d-%02d
    ",y,i,n);
        }
        return 0;
    }
    View Code

     E没啥难度,注意跟前面的A区分,这里面两天的差值,相隔一天是一天,A题中相邻两天是两天

    这里面从去年到今年的同一天(今年当天不算),对应闰年是365,对应平年364

    #include<stdio.h>
    int month[13][2]={0,0,31,31,28,29,31,31,30,30,31,31,30,30,31,31,31,31,30,30,31,31,30,30,31,31};
    bool isrun(int year)
    {
        if((year%4==0 && year%100!=0) || year%400==0)
            return true;
        return false;
    }
    int main()
    {
        int n;
        scanf("%d",&n);
        while(n--)
        {
            int y,m,d,sum;
            scanf("%d %d %d %d",&y,&m,&d,&sum);
            int data=m*100+d;
            while(sum>=365)
            {
                if(data<=229)
                {
                    if(isrun(y))
                    {
                        sum=sum-365;
                        //y++;
                        if(data==229)
                        {
                            data=301;
                            m=3;
                            d=1;
                        }
                    }
                    else
                        sum=sum-364;
                    y++;
                }
                else
                {
                    if(isrun(y+1))
                    {
                        sum=sum-365;
                    }
                    else
                        sum=sum-364;
                    y++;
                }
            }
            while(sum>0)
            {
                d++;
                sum--;
                if(d>month[m][isrun(y)])
                {
                    d=1;
                    m++;
                    if(m>12)
                    {
                        m=1;
                        y++;
                    }
                }
            }
            printf("%04d-%02d-%02d
    ",y,m,d);
        }
        return 0;
    }
    View Code
    时间才能证明一切,选好了就尽力去做吧!
  • 相关阅读:
    ul>li中自定义属性后取值的问题
    img标签src图片地址找不到显示默认图片
    jquery通配符说明
    jquery控制元素的显示与隐藏
    mysql中行转列与列传行的问题
    页面禁止滚动条
    HttpServletRequest继承字ServletRequest的常用方法
    系统间通信方式
    mysql函数积累
    java 用maven 构建项目时@Override错误的解决办法
  • 原文地址:https://www.cnblogs.com/tingxilin/p/11371768.html
Copyright © 2011-2022 走看看