zoukankan      html  css  js  c++  java
  • HDU4545+计算日期

    /*
    计算过了D天后的日期
    之前D天的日期
    */
    #include<stdio.h>
    int judge_year( int year ){
        if( (year%4==0&&year%100!=0)||(year%400==0) )
            return true;
        else
            return false;
    }
    int judge_month( int mon ){
        if( mon==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12 ) 
            return true;
        else
            return false;
    }
    int main(){
        int ca;
        //freopen("cmp.txt","w",stdout);
        scanf("%d",&ca);
        while( ca-- ){
            int n;
            scanf("%d",&n);
    
            int year,mon,day;
            year = 2013;
            mon = 3;
            day = 24;
            int sum = n;
            while( sum>0 ){
                if( judge_year(year)==true ){
                   
                    //printf("sum=%d,,year = %d,mon=%d,day=%d
    ",sum,year,mon,day);
                        if( mon==2 ){
                            int left = 29-day;
                            if( sum>left ){
                                sum = sum-(left+1);
                                mon++;
                                day = 1;
                                            }
                            else if( sum==left ){
                                sum = 0;
                                day = 29;
                                        }
                            else {
                                day += sum;
                                sum = 0;
                            }    
                        }
                        else if( judge_month( mon )==true ){
                            int left = 31-day;
                            if( sum>left ){
                                sum = sum-left-1;
                                mon++;
                                if( mon>12 ) {
                                    year++;
                                    mon = 1;
                                }
                                day = 1;
                            }
                            else if( sum==left ){
                                sum = 0;
                                day = 31;
                            }
                            else{
                                day += sum;
                                sum = 0;
                            }
                        }
                        else {
                            int left = 30-day;
                            if( sum>left ){
                                sum = sum-left-1;
                                mon++;
                                if( mon>12 ) {
                                    year++;
                                    mon = 1;
                                }
                                day = 1;
                            }
                            else if( sum==left ){
                                sum = 0;
                                day = 30;
                            }
                            else{
                                day += sum;
                                sum = 0;
                            }
                        }
                    
                }//闰年
                else{
                    
                        if( mon==2 ){
                            int left = 28-day;
                            if( sum>left ){
                                sum = sum-left-1;
                                mon++;
                                day = 1;
                            }
                            else if( sum==left ){
                                sum = 0;
                                day = 28;
                            }
                            else {
                                day += sum;
                                sum  = 0;
                            }    
                        }
                        else if( judge_month( mon )==true ){
                            int left = 31-day;
                            if( sum>left ){
                                sum = sum-left-1;
                                mon++;
                                if( mon>12 ) {
                                    year++;
                                    mon = 1;
                                }
                                day = 1;
                            }
                            else if( sum==left ){
                                sum = 0;
                                day = 31;
                            }
                            else{
                                day += sum;
                                sum = 0;
                            }
                        }
                        else {
                            int left = 30-day;
                            if( sum>left ){
                                sum = sum-left-1;
                                mon++;
                                if( mon>12 ) {
                                    mon = 1;
                                    year++;
                                }
                                day = 1;
                            }
                            else if( sum==left ){
                                sum = 0;
                                day = 30;
                            }
                            else{
                                day += sum;
                                sum = 0;
                            }
                        }
                    
                }//不是闰年
                if( sum<=0 ) 
                    break;
            }//向后D天的日期
    
            printf("%04d/%02d/%02d ",year,mon,day);
            year = 2013;
            mon = 3;
            day = 24;
            sum = n;
            while( sum>0 ){
                if( judge_year( year )==true ){
                    if( sum>=366 ){
                        sum-=366;
                        year--;
                    }
                    else{
                        if( mon==3 ){
                            int left = day;
                            if( sum>=29 ){
                                sum-=29;
                                mon--;
                            }
                            else {
                                if( sum==left-1 ){
                                    sum = 0;
                                    day = 1;
                                }
                                else if( sum<left-1 ){
                                    day -= sum;
                                    sum = 0;
                                }
                                else {
                                    sum -= left;
                                    day = 29;
                                    mon--;
                                }
                            }
                        }
                        else if( mon==5||mon==7||mon==10||mon==12 ){
                            int left = day;
                            if( sum>=30 ){
                                sum-=30;
                                mon--;
                            }
                            else {
                                if( sum==left-1 ){
                                    sum = 0;
                                    day = 1;
                                }
                                else if( sum<left-1 ){
                                    day -= sum;
                                    sum = 0;
                                }
                                else {
                                    sum -= left;
                                    day = 30;
                                    mon--;
                                }
                            }
                        }
                        else {
                            int left = day;
                            if( sum>=31 ){
                                sum-=31;
                                mon--;
                                if( mon<=0 ){
                                    year--;
                                    mon=12;
                                }
                            }
                            else {
                                if( sum==left-1 ){
                                    sum = 0;
                                    day = 1;
                                }
                                else if( sum<left-1 ){
                                    day -= sum;
                                    sum = 0;
                                }
                                else {
                                    sum -= left;
                                    day = 31;
                                    mon--;
                                    if( mon==0 ){
                                        mon = 12;
                                        year--;
                                    }
                                }
                            }
                        }
                    }
                }//闰年
                else {
                    if( sum>=365 ){
                        sum-=365;
                        year--;
                    }
                    else{
                        if( mon==3 ){
                            int left = day;
                            if( sum>=28 ){
                                sum-=28;
                                mon--;
                            }
                            else {
                                if( sum==left-1 ){
                                    sum = 0;
                                    day = 1;
                                }
                                else if( sum<left-1 ){
                                    day -= sum;
                                    sum = 0;
                                }
                                else {
                                    sum -= left;
                                    day = 28;
                                    mon--;
                                }
                            }
                        }
                        else if( mon==5||mon==7||mon==10||mon==12 ){
                            int left = day;
                            if( sum>=30 ){
                                sum-=30;
                                mon--;
                            }
                            else {
                                if( sum==left-1 ){
                                    sum = 0;
                                    day = 1;
                                }
                                else if( sum<left-1 ){
                                    day -= sum;
                                    sum = 0;
                                }
                                else {
                                    sum -= left;
                                    day = 30;
                                    mon--;
                                }
                            }
                        }
                        else {
                            int left = day;
                            if( sum>=31 ){
                                sum-=31;
                                mon--;
                                if( mon==0 ){
                                    year--;
                                    mon=12;
                                }
                            }
                            else {
                                if( sum==left-1 ){
                                    sum = 0;
                                    day = 1;
                                }
                                else if( sum<left-1 ){
                                    day -= sum;
                                    sum = 0;
                                }
                                else {
                                    sum -= left;
                                    day = 31;
                                    mon--;
                                    if( mon==0 ){
                                        mon = 12;
                                        year--;
                                    }
                                }
                            }
                        }
                    }
                }//不是闰年
                if( sum<=0 ) break;
            }
    
            printf("%04d/%02d/%02d
    ",year,mon,day);
        }
        return 0;
    }


  • 相关阅读:
    H5C3--transform实现任何元素居中对齐
    H5C3--过渡transition
    H5C3--background中cover,背景样式,提升响应区域+精灵图的使用
    SpringBoot之spring.factories
    浅谈常用数据结构
    浅谈常用排序
    JAVA性能优化总结
    ORACLE10G非归档模式下RMAN异机迁库
    ORACLE10G非归档模式下异机迁库(文件迁移)
    HNOI 米特运输
  • 原文地址:https://www.cnblogs.com/aukle/p/3228784.html
Copyright © 2011-2022 走看看