九度题目1186:打印日期

题目描述:

给出年分m和一年中的第n天,算出第n天是几月几号。

输入:

输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。

输出:

可能有多组测试数据,对于每组数据,

按 yyyy-mm-dd的格式将输入中对应的日期打印出来。

样例输入:
2000 3
2000 31
2000 40
2000 60
2000 61
2001 60
样例输出:
2000-01-03
2000-01-31
2000-02-09
2000-02-29
2000-03-01
2001-03-01

#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<stack>
#include<vector>
#include<string.h>
#include<limits.h>
#include<stdlib.h>

#define ABS(x) ((x)>=0?(x):(-(x)))
using namespace std;
static int month[]={0,31,28,31,30,31,30,31,31,30,31,30};
int main()
{
    freopen("test.in","r",stdin);
    freopen("test.out","w",stdout);
    int year,days;
    int i ;
    bool leap;
    while(cin>>year>>days)
    {
        if((year%4==0&&year%100!=0)||year%400==0)
            leap = true;
        else
            leap = false;
        for(i=1;i<12;i++)
        {
            if(i!=2)
            {
                if(days<=month[i])
                    break;
                else
                    days -= month[i];
            }
            else
            {
                if(leap)
                {
                if(days<=month[i]+1)
                    break;
                else
                    days = days - month[i] - 1;
                }
                else
                {
                if(days<=month[i])
                    break;
                else
                    days -= month[i];
                }
            }
        }
        printf("%04d-%02d-%02d\n",year,i,days);

    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}
时间: 2024-12-20 18:17:16

九度题目1186:打印日期的相关文章

九度题目1096:日期差值

题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 #include<stdio.h> #include<algorithm> #include<iostream> #include<stack> #include<vector&

九度 题目1335:闯迷宫 题目1365:贝多芬第九交响曲

转载请注明本文地址http://blog.csdn.net/yangnanhai93/article/details/40718149 简单说说宽度优先搜索BFS 说实话,这是第一个自己写的宽度优先搜索的题目,之前也是不太明白之间的区别,好吧,只能说自己学的太渣-- 言归正传,对于初学者来说,可能最大的概念就是一个是深度搜索,一个是宽度搜索,好吧,我表示废话了,我其实就是这个样子的,然后一直不得甚解...所以第一次上来,我就直接搜索DFS,结果太明显,就是TLE或者MLE,然后就抓狂中,这可能是

1186.打印日期

题目描述: 给出年分m和一年中的第n天,算出第n天是几月几号. 输入: 输入包括两个整数y(1<=y<=3000),n(1<=n<=366). 输出: 可能有多组测试数据,对于每组数据, 按 yyyy-mm-dd的格式将输入中对应的日期打印出来. 样例输入: 2000 3 2000 31 2000 40 2000 60 2000 61 2001 60 样例输出: 2000-01-03 2000-01-31 2000-02-09 2000-02-29 2000-03-01 2001-

九度 题目1123:采药

题目描述: 辰辰是个很有潜能.天资聪颖的孩子,他的梦想是称为世界上最伟大的医师. 为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题. 医师把他带到个到处都是草药的山洞里对他说: "孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值. 我会给你一段时间,在这段时间里,你可以采到一些草药.如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大." 如果你是辰辰,你能完成这个任务吗? 输入: 输入的第一行有两个整数T(1 <=

九度 题目1122:吃糖果

题目描述: 名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名(盒内共有 N 块巧克力,20 > N >0). 妈妈告诉名名每天可以吃一块或者两块巧克力. 假设名名每天都吃巧克力,问名名共有多少种不同的吃完巧克力的方案. 例如: 如果N=1,则名名第1天就吃掉它,共有1种方案: 如果N=2,则名名可以第1天吃1块,第2天吃1块,也可以第1天吃2块,共有2种方案: 如果N=3,则名名第1天可以吃1块,剩2块,也可以第1天吃2块剩1块,所以名名共有2+1=3种方案: 如果N=4,则名名可以

九度 题目1205:N阶楼梯上楼问题

题目描述: N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用非递归) 输入: 输入包括一个整数N,(1<=N<90). 输出: 可能有多组测试数据,对于每组数据, 输出当楼梯阶数是N时的上楼方式个数. 样例输入: 4 样例输出: 5 分析:第n阶台阶的方法等于上到第n-1阶台阶的方法加上第n-2阶的台阶的方法之和,因为89阶的时候已经超过2的32次方,所以用long long int 代码如下: #include <stdio.h> long long int

九度 题目1448:Legal or Not

判断是否存在环的问题,本文采用的是拓扑排序,如果输出的节点少于N,则形成了环,和之前的1449几乎是一样的代码 题目链接http://ac.jobdu.com/problem.php?pid=1448 转载请注明本文地址http://blog.csdn.net/yangnanhai93/article/details/41226369 #include <iostream> #include <memory.h> #include <queue> using names

九度 题目1449:确定比赛名次

很明显的拓扑排序问题,绘制成图之后会发现很好理解,刚开始我自己也不是很理解,画图之后思路特别清晰 转载请注明本文地址http://blog.csdn.net/yangnanhai93/article/details/41226221 题目链接http://ac.jobdu.com/problem.php?pid=1449 #include <iostream> #include <memory.h> #include <queue> using namespace st

九度-题目1011:最大连续子序列

题目描述:     给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K.最大连续子序列是所有连续子序列中元素和最大的一个,例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和为20.现在增加一个要求,即还需要输出该子序列的第一个和最后一个元素. 输入: 测试输入包含若干测试用例,每个测试用例占2行,第1行给出