• 题目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


    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
    ",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);
    			}
    		}
    }



  • 相关阅读:
    项目总结60:Springboot集成swagger2
    ELK学习01:ELK安装
    Java深入学习16:NIO详解2-Selector
    Java深入学习15:NIO详解1-基本概念、Buffer、Channel
    Java深入学习14:Java线程池
    Java深入学习13:synchronized在静态方法和非静态方法下的同步
    Java深入学习12:线程按目标顺序执行以及Lock锁和Condiiton接口
    项目总结59:Redis分布式锁解决电商订单库存并发问题
    Java深入学习11:Lock锁详解
    Java深入学习09:URL类使用和判断图片资源是否有效
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7402427.html
Copyright © 2020-2023  润新知