码迷,mamicode.com
首页 > 其他好文 > 详细

题目1186:打印日期

时间:2015-08-19 11:15:45      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:online judge   九度   

题目描述:

给出年分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


C++代码:

#include <iostream>
    #include <stdio.h>
    using namespace std;
    int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};
    int main()
    {
            int y,d;
            while(cin>>y>>d){
                    int i;
                    if((y%4==0&&y%100!=0) || y%400==0){
                            for(i = 0;i<12&&d>0;i++){
                                    d-=b[i];
                            }
                            d+=b[--i];
                    }
                    else{
                            for(i = 0;i<12&&d>0;i++){
                                            d-=a[i];
                            }
                            d+=a[--i];
                    }
                    printf("%04d-%02d-%02d\n",y,i+1,d);
            }
    }
/**************************************************************
    Problem: 1186
    User: Carvin
    Language: C++
    Result: Accepted
    Time:140 ms
    Memory:1520 kb
****************************************************************/

Java代码:

package oj1186;

import java.util.Scanner;

public class oj1186{
	public static void main(String args[]){
		int years, days;
		int month[]={31,28,31,30,31,30,31,31,30,31,30,31};
		Scanner in =new Scanner(System.in);
		while(in.hasNext()){
			String outMonths = null,outDays = null,outYears=null;
			years=in.nextInt();
			days=in.nextInt();
			if(years<1||years>3000||days<1||days>367)
				continue;
			int months=1;
			if(years%400==0||(years%4==0&&years%100!=0))
				month[1]=29;
			for(int i=0;i<12;i++){
				if(days-month[i]>0){
					months++;
					days-=month[i];
				}
				else
					break;
			}//for
			if(months<10)
				outMonths="0"+months;
			else
				outMonths=""+months;
			if(days<10)
				outDays="0"+days;
			else
				outDays=""+days;
			if(years<1000&&years>=100)
				System.out.println("0"+years+"-"+outMonths+"-"+outDays);
			else if(years>=1000)
				System.out.println(+years+"-"+outMonths+"-"+outDays);
			else if(years<100&&years>=10)
				System.out.println("00"+years+"-"+outMonths+"-"+outDays);
			else if(years<10)
				System.out.println("000"+years+"-"+outMonths+"-"+outDays);
			}
		}
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

题目1186:打印日期

标签:online judge   九度   

原文地址:http://blog.csdn.net/carvin_zh/article/details/47776853

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!