zoukankan      html  css  js  c++  java
  • 高斯日记

    题目描述

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

    他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如: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;
    }
  • 相关阅读:
    php IE中文乱码
    Ehab and a 2-operation task (思维题)
    9-7链表数据求和操作
    "巴卡斯杯" 中国大学生程序设计竞赛
    Codeup 问题 B: 算法7-16:弗洛伊德最短路径算法
    一只小蜜蜂...
    结构体作为函数参数(值传递,引用传递,指针传递)
    Codeforces Round # 515 (div.3) A. Vova and Train
    查找最大元素
    JSP复习(part 4)
  • 原文地址:https://www.cnblogs.com/debug-the-heart/p/12486939.html
Copyright © 2011-2022 走看看