您的位置:首页 > 编程语言 > Java开发

hdoj1201_18岁生日java

2017-07-24 16:51 225 查看
import java.util.Scanner;

import java.math.*;

public class Main {

    static int run = 366, ping = 365;

    static int[] mon = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

    static int[] mon1 = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        while (in.hasNextInt()) {

            int n = in.nextInt();

            for (int i = 0; i < n; i++) {

                String[] aa = in.next().split("-");

                int y = Integer.parseInt(aa[0]);

                int m = Integer.parseInt(aa[1]);

                int d = Integer.parseInt(aa[2]);

                //判断2月29

                if (d == 29)

                    if ((y + 18) % 100 == 0)

                        if ((y + 18) % 400 != 0)

                            System.out.println(-1);

                        else

                            System.out.println(sum(y, m, d));

                    else

                        System.out.println(-1);

                else

                    System.out.println(sum(y, m, d));

            }

        }

    }

    public static int sum(int y, int m, int d) {

        int num = 0;

        //满一年年份天数计算

        for (int i = 1; i < 18; i++)

            if ((y + i) % 100 == 0)

                if ((y + i) % 400 == 0)

                    num += run;

                else

                    num += ping;

            else if ((y + i) % 4 == 0)

                num += run;

            else

                num += ping;

        //出生年

        if ((y) % 100 == 0)

            if ((y) % 400 == 0) {

                for (int i = 11; i > m - 1; i--)

                    num += mon1[i];

                num += mon1[m-1]-d;

            } else {

                for (int i = 11; i > m - 1; i--)

                    num += mon[i];

                num += mon[m-1]-d;

            }

        else if ((y) % 4 == 0) {

            for (int i = 11; i > m - 1; i--)

                num += mon1[i];

            num += mon1[m-1]-d;

        } else {

            for (int i = 11; i > m - 1; i--)

                num += mon[i];

            num += mon[m-1]-d;

        }

        //生日年

        if ((y + 18) % 100 == 0)

            if ((y + 18) % 400 == 0) {

                for (int i = 0; i < m - 1; i++)

                    num += mon1[i];

                return num + d;

            } else {

                for (int i = 0; i < m - 1; i++)

                    num += mon[i];

                return num + d;

            }

        else if ((y + 18) % 4 == 0) {

            for (int i = 0; i < m - 1; i++)

                num += mon1[i];

            return num + d;

        } else {

            for (int i = 0; i < m - 1; i++)

                num += mon[i];

            return num + d;

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java hdoj 18岁生日