• 高斯日记


    题目描述

    大数学家高斯有个好习惯:无论如何都要记日记。

    他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210

    后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?

    高斯出生于:1777年4月30日。

    在高斯发现的一个重要定理的日记上标注着:5343。

    因此可算出那天是:1791年12月15日。

    给出高斯日记上的一个数字N,

    请你算出高斯写日记时的年月日。

    为了方便,我们假设高斯从出生后的第一天就开始写日记了,一直写到他去世时也就是1855年2月23日。

    输入

    输入数据有多组,每组占一行,由1个实数组成,表示N且1<=N<=28423 

    输出

    对于每组输入数据,输出一行,结果同样例格式一致。

    样例输入

    1
    28423
    

    样例输出

    1777-04-30
    1855-02-23

    #include<stdio.h>
    int month[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
    int ydays[2][1]={{365},{366}};
    int y=1777;
    int m=4;
    int d=30;
    
    int is_lyear(int year){
        int is=0;
        if((year%4==0&&year%100!=0)||year%400==0) is=1;
        return is;
    }
    void cal(int mdays){
        int fy_sd=1+31+30+31+31+30+31+30+31;
        if(mdays>fy_sd){//超过1777年
                mdays-=(fy_sd+1);
                y+=1;//处理第一年
                m=1;
                d=1;
                while(mdays>ydays[is_lyear(y)][0]){//先算需要添加的年份
                    mdays-=ydays[is_lyear(y)][0];
                    y+=1;
                }
                while(mdays>0){
                    d+=1;
                if(d>month[is_lyear(y)][m]){
                    d=1;
                    m+=1;
    
                }
    
                    mdays--;
                }
        }
        else{
            mdays--;
            while(mdays>0){
                d+=1;
                if(d>month[is_lyear(y)][m]){
                    d=1;
                    m+=1;
                }
               mdays--;
            }
        }
    
    
    
      printf("%d-%02d-%02d
    ",y,m,d);
    }
    
    
    int main(){
    
    int n;
    while(scanf("%d",&n)!=EOF&&n>=1&&n<=28423){
         y=1777;
         m=4;
         d=30;
        cal(n);
    
    
    
    }
    return 0;
    }
  • 相关阅读:
    Matlab P文件——加快Matlab程序,保护你的算法
    电烙铁的使用
    CV、PR方向的资源
    遗传算法初接触
    Linux进程控制
    C语言编程优化运行速度
    用MATLAB优化工具箱解线性规划
    50、linux shell命令,netstat,traceroute
    51、linux shell命令,route,ifconfig
    56、vi常见用法,多窗口模式,标记,多文件编辑,快捷操作及设置
  • 原文地址:https://www.cnblogs.com/debug-the-heart/p/12486939.html
Copyright © 2020-2023  润新知