package _____;
import java.util.Scanner;
public class wnl//萬年歷主類
{
    public static void main(String[] args)
    {
        
        menu();
        Scanner sc=new Scanner(System.in);
        int menu=sc.nextInt();
        if(menu==1)
        {
            System.out.println("(1)、請輸入一個年份");
         
            int year=sc.nextInt();        
            boolean f1=pdrn(year);
            if(f1==true)
            {
                System.out.println("該年份是閏年");
            }
            else
            {
                System.out.println("該年份不是閏年,是平年");
            }
        }
        
        else if(menu==2)
        {        
            System.out.println("(2)、請輸入幾年幾月份");
            int year=sc.nextInt();
            int month=sc.nextInt();
            int day=monthDay(year,month);
            System.out.println("該"+month+"月有"+day+"天");
        }
        else if(menu==3)
        {            
            System.out.println("(3)、請輸入幾年幾月");
            int year=sc.nextInt();
            int month=sc.nextInt();
            int days=timesum(year,month);
            System.out.println(year+"年"+month+"月前距1900年1月1號有"+days+"天");
        }
        else
        {
            System.out.println("(4)、請輸入你想打印幾年幾月");
            int year=sc.nextInt();
            int month=sc.nextInt();
            printCalendar(year,month);
        }
            
    }
    public static void menu()
    {
            
        System.out.println("請選擇你想要測試的是哪一項");
        System.out.println("(1)判斷閏年");
        System.out.println("(2)判斷某年某月有多少天");
        System.out.println("(3)計算某年某月前距離1900年1月1日的總天數");
        System.out.println("(4)輸出某年某月日歷");            
    }
    public static boolean pdrn(int year)//判斷閏年
    {
        if(year%400==0&&year%100==0)
        {            
            return true;
        }
        else if(year%4==0&&year%100!=0)
        {            
            return true;
        }
        else
        {
            return false;  
        }
    }
    public static int monthDay(int y,int m)//計算某個月天數
    {
        boolean f2=pdrn(y);
        if(m==2)//2月時候
        {
            if(f2==true)
            {
                return 29;
            }
            else
            {
                return 28;
            }
        }
        else if(m==4||m==6||m==9||m==11)
        {            
            return 30;
        }
        else
        {
            return 31;
        }
                
    }
    
    
    
    public static int timesum(int y,int m)//計算天數和
    {
        int days=0;
        if(y<1900)
        {
            System.out.println("請輸入1900年以后的時間");//如果用戶不小心輸入1900年以前的時間,系統退出
            System.exit(-1);
        }
        for(int i=1900;i<y;i++)    
        {
            if(pdrn(i)==true)
            {
                days+=366;   //閏年加上366天
            }
            else
            {
                days+=365;   //平年加上365天
            }
            
        }
        for(int j=1;j<m;j++)
        {
            days+=monthDay(y,j);  //加上每個月的天數
        }
        return days;
        
    }

    public static void printCalendar(int y,int m)
    {
        int days=timesum(y,m);
        int blank=(days+1)%7;  
        int day=monthDay(y,m);
        System.out.println("日\t"+"一\t"+"二\t"+"三\t"+"四\t"+"五\t"+"六\t");
        for(int i=1;i<=blank;i++)
        {
            System.out.print("\t");
        }
        for(int i=1;i<=day;i++)
        {            
            System.out.print(i+"\t");
            if((i+blank)%7==0)
            {
                System.out.println();
            }
        }
        System.out.println();
    }
    
    
    

}//參考借鑒宋佳麗程序思路框架;