杭电ACM1201java做法
来源:互联网 发布:淘宝网儿童服装女装 编辑:程序博客网 时间:2024/04/28 20:25
18岁生日
Problem Description
Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的几个朋友从出生到达18岁生日所经过的总天数,让他好来比较一下。
Input
一个数T,后面T行每行有一个日期,格式是YYYY-MM-DD。如我的生日是1988-03-07。
Output
T行,每行一个数,表示此人从出生到18岁生日所经过的天数。如果这个人没有18岁生日,就输出-1。
Sample Input
1
1988-03-07
Sample Output
Problem Description
Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的几个朋友从出生到达18岁生日所经过的总天数,让他好来比较一下。
Input
一个数T,后面T行每行有一个日期,格式是YYYY-MM-DD。如我的生日是1988-03-07。
Output
T行,每行一个数,表示此人从出生到18岁生日所经过的天数。如果这个人没有18岁生日,就输出-1。
Sample Input
1
1988-03-07
Sample Output
6574
看起来很简单的题目,结果自己粗心大意,理解错了,以为是算这个人从出生到今天有没有到18岁。。理所当然的错光了。。。照着别人C语言里的代码,改成java的,第一次,这么改
import java.util.Date;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int i,y,m,d,sum,x; while(n--!=0) { sum=0; String days=sc.next(); String[]days2=days.split("-"); int []num=new int[3]; for(int z=0;z<days2.length;z++){ num[z]=Integer.parseInt(days2[z]); } if(num[1]==2&&num[2]==29) { System.out.println("-1"); continue; } if((num[0]%4==0&&num[0]%100!=0||num[0]%400==0)&&num[1]<3) sum++; x=num[0]+18; if((num[0]%4==0&&num[0]%100!=0||num[0]%400==0)&&num[1]>3) sum++; for(i=num[0]+1;i<num[0]+18;i++) if(i%4==0&&i%100!=0||i%400==0) sum++; System.out.println(365*18+sum); } }}居然给了我WA,明明答案对的啊!好吧当时一时心急,想马上AC掉这道题目,也没细看做法,感觉写的有些混乱,感觉中间写的那两个if没什么用,就删了,代码就成这样
import java.util.Date;import java.util.Scanner;public class Q1201t { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int i,y,m,d,sum,x; while(n--!=0) { sum=0; String days=sc.next(); String[]days2=days.split("-"); int []num=new int[3]; for(int z=0;z<days2.length;z++){ num[z]=Integer.parseInt(days2[z]); } if(num[1]==2&&num[2]==29) { System.out.println("-1"); continue; } for(i=num[0]+1;i<num[0]+18;i++) if(i%4==0&&i%100!=0||i%400==0) sum++; System.out.println(365*18+sum); } }}
好吧还是WA,再改。。
import java.util.Date;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int i,y,m,d,sum,x; while(n--!=0) { sum=0; String days=sc.next(); String[]days2=days.split("-"); int []num=new int[3]; for(int z=0;z<days2.length;z++){ num[z]=Integer.parseInt(days2[z]); } if(num[1]==2&&num[2]==29) { System.out.println("-1"); continue; } else { for(i=num[0]+1;i<num[0]+18;i++) { sum+=haha(i); } int t=0; if(num[1]>2||(num[1]==2&&num[2]==29)) { if(haha(num[0]+18)==366) t++; } if(num[1]<2||(num[1]==2&&num[2]<29)) { if(haha(num[0])==366) t++; } System.out.println(sum+365+t); } }} public static int haha(int yoo) { int z; if((yoo%400==0)||(yoo%4==0&&yoo%100!=0)) z=366; else z=365; return(z); } }通过了。。。具体原因,不详。。
0 0
- 杭电ACM1201java做法
- 杭电ACM1108java做法
- 杭电ACM2000java做法
- 杭电ACM2001java做法
- 杭电ACM2002java做法
- 杭电ACM2003java做法
- 杭电ACM2004java做法
- 杭电ACM2005java做法
- 杭电ACM2006java做法
- 杭电ACM2007java做法
- 杭电ACM2008java做法
- 杭电ACM2009java做法
- 杭电ACM2010java做法
- 杭电ACM2011java做法
- 杭电ACM2012java做法
- 杭电ACM2013java做法
- 杭电ACM2014java做法
- 杭电ACM2015java做法
- java线程学习
- Object-C实现DES加密算法详解
- C++ async 函数的使用
- 陈怡暖:美国初请失业金人数数据备受关注
- 【Maven】Maven的下载与配置,修改其本地仓库,并挂在到Eclipse for javeee建立一个Servlet3.0的Helloworld
- 杭电ACM1201java做法
- HDU -- 2242 考研路茫茫――空调教室(双连通 求割边)
- 变电站综合自动化系统--3算法基础
- 利用Python和win32编程范例——按需定制一个按键精灵
- 利用Volley来实现网络图片的加载
- RK3066的uboot源码分析
- c++作业4.18
- EasyUI 学习汇总
- Leetcode: Duplicate Emails