zoukankan      html  css  js  c++  java
  • hdu 4515 年月份模拟题

    小Q系列故事——世界上最遥远的距离

    Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
    Total Submission(s): 1314    Accepted Submission(s): 463

    Problem Description

    世界上最遥远的距离
    不是生与死
    而是我就站在你面前
    你却不知道我爱你

    世界上最遥远的距离
    不是我就站在你面前你却不知道我爱你
    而是明明知道彼此相爱
    却不能在一起

    世界上最遥远的距离
    不是明明知道彼此相爱却不能在一起
    而是相约好了私奔的时间
    我穿越到了未来 你却回去了古代

    ——摘自《小Q失恋日记 》第117卷513页

    当小Q使出浑身解数,终于赢得HR女神芳心的时候,却出现了一个意外情况,那就是白富美HR的妈妈并不同意他们交往,当听说小Q只是一个码农,特别是听说小Q曾经参加过资本主义国家发起的SM/ICPC比赛的时候,更是坚决反对!
    爱情是伟大的,但是得不到亲人祝福的爱情却备受折磨,小Q和HR相约在腾讯第二届编程马拉松大赛进行到第5天的时候(即2013年3月24日),一起“向前穿越D天,然后开启幸福新生活”。
    其勇气可谓令人赞叹,但可怜的小Q却总是备受折磨——小Q理解的”向前穿越”是朝着未来的方向,而女友HR理解的“向前穿越”却是朝着古代的方向!
    假设已知现在的日期和穿越的天数D,你能计算出小Q和女友各自到达的年代吗?
     
    Input
    输入首先包含一个整数N,表示有N组测试用例;
    接下来N行是N组数据,每一行包含一个正整数D(D<=10,0000),D表示向前穿越的天数。
     
    Output
    请计算并输出小Q和女友分别到达的日期,日期格式为YYYY/MM/DD,两个日期中间用一个空格隔开,每组数据占一行,具体输出格式请参见样例。
     
    Sample Input
    2 6 30
     
    Sample Output
    2013/03/30 2013/03/18 2013/04/23 2013/02/22
     
    Source
     
    Recommend
    liuyiding
     
    #include<stdio.h>
    int day[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}
    };
    void solve1(int yy,int mm,int dd,int n)
    {
        int i,flag=0,j,k,y,m,d;
        while(n)
        {
            if(yy%400==0||(yy%4==0&&yy%100!=0))
                flag=1;//闰年
            else flag=0;
            if(n<=day[flag][mm]-dd)//n不足过完这一月了
            {
                 dd=dd+n; break;
            }
            else
            {
                n=n-(day[flag][mm]-dd+1);
                mm++;
                dd=1;
                if(mm>12)
                {
                    yy++;
                    mm=1;
                }
            }
        }
        printf("%02d/%02d/%02d ",yy,mm,dd);
    
    }
    void solve2(int yy,int mm,int dd,int n)
    {
        int i,flag=0,j,k,y,m,d;
        while(n)
        {
            if(yy%400==0||(yy%4==0&&yy%100!=0))
                flag=1;//闰年
            else flag=0;
            if(n<dd)//n不足倒退到下一月了
            {
                 dd=dd-n; break;
            }
            else
            {
                n=n-dd;
                mm--;
                if(mm<=0)
                {
                    yy--;
                    mm=12;
                }
                dd=day[flag][mm];
            }
        }
        printf("%02d/%02d/%02d
    ",yy,mm,dd);
    
    }
    int main()
    {
        int cas,i,j,k,y,d,m;
        scanf("%d",&k);
        while(k--)
        {
            int n;
            scanf("%d",&n);
            solve1(2013,3,24,n);
            solve2(2013,3,24,n);
    
        }
    }
    

     
     
  • 相关阅读:
    【POJ 3162】 Walking Race (树形DP-求树上最长路径问题,+单调队列)
    【POJ 2152】 Fire (树形DP)
    【POJ 1741】 Tree (树的点分治)
    【POJ 2486】 Apple Tree (树形DP)
    【HDU 3810】 Magina (01背包,优先队列优化,并查集)
    【SGU 390】Tickets (数位DP)
    【SPOJ 2319】 BIGSEQ
    【SPOJ 1182】 SORTBIT
    【HDU 5456】 Matches Puzzle Game (数位DP)
    【HDU 3652】 B-number (数位DP)
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3180282.html
Copyright © 2011-2022 走看看