zoukankan      html  css  js  c++  java
  • hdu 4515(关于时间的穿越)

    题意:容易理解.

    分析:对于这种类型的题目我们以后可以把它当做一种模板题来做,首先我要处理的就是把时间变到从一年的最后一天开始穿越,分为两种情况:一种是往前穿越,另一种是往后穿越,当写代码的时候有些区别需要注意的,具体看代码实现吧!!

    代码实现:

    #include<stdio.h>
    #include<string.h>
    int y=2013,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    int runnian(int n)//判断是否是闰年
    {
        if((n%4==0&&n%100!=0)||n%400==0)
            return 1;
        else
            return 0;
    }
    void nima1(int time)//往前穿越
    {
        int i,t1,t2,t3,temp;
        for(i=y; ;i++)
        {
            temp=365;
            if(runnian(i))
                temp++;
            if(time<=temp)//发现这里有一个BUG,去掉等号实际上是错误的,可是在杭电上是能够AC的
                break;
            time=time-temp;
        }
        t1=i;
        a[2]=28;
        if(runnian(t1))
            a[2]++;
        for(i=1;i<=12;i++)
        {
            if(time<=a[i])
                break;
            time=time-a[i];
        }
        t2=i;
        t3=time;
        printf("%d/%02d/%02d",t1,t2,t3);
    }
    void nima2(int time)//往后穿越,相对于往前穿越有点麻烦
    {
        int i,t1,t2,t3,temp;
        for(i=y-1;;i--)
        {
            temp=365;
            if(runnian(i))
               temp++;
            if(time<temp)//这里和往前穿越是不同的
                break;
            time=time-temp;
        }
        t1=i;
        a[2]=28;
        if(runnian(t1))
            a[2]++;
        for(i=12; ;i--)
        {
            if(i==0)
                i=12;
            if(time<a[i])//这里和往前穿越是不同的
                break;
            time=time-a[i];
        }
        t2=i;
        t3=a[i]-time;
        printf("%d/%02d/%02d",t1,t2,t3);
    }
    int main()
    {
        int T,time,time1,time2;
        while(scanf("%d",&T)!=EOF)
        {
            while(T--)
            {
            
              scanf("%d",&time);
              time1=time+83;//首先我要进行变化,我都是变到从2012年12月31号开始穿越
              nima1(time1);
              printf(" ");
              time2=time-83;
              if(time2<0)
              {
                 time2=83-time;
                 nima1(time2);        
              }
              else
                 nima2(time2);
              printf("\n");
            }
        }
        return 0;
    }

     http://www.hxen.com/CET46/CET4/xiezuo/2011-12-14/163073.html

  • 相关阅读:
    CF997C Sky Full of Stars
    LOJ6160 二分图染色
    AT4996 [AGC034F] RNG and XOR
    AT4119 [ARC096C] Everything on It
    20200701线性代数概率期望练习
    SNOI2020 LOJ3326 字符串
    SNOI2020 LOJ3323 生成树
    SNOI2020 LOJ3324 取石子
    Gym-102576A Bags of Candies
    Gym-102576H Lighthouses
  • 原文地址:https://www.cnblogs.com/jiangjing/p/3118678.html
Copyright © 2011-2022 走看看