欧拉工程第19题
2015-04-30 19:46
288 查看
题目链接:https://projecteuler.net/problem=19
求:1901-2000年内,每月的一号是星期天的总天数。
注意题目:
1.1901年开始
2.星期日
3.题目说1900.1.1是星期一,求解的不是星期一,也不是从1900年开始的
思路:
1.年,月,是否星期日,主要这三个就好了。
2.判断是不是闰年
3.从1901年开始
4.先找出每个月的1号距1900年1.1有多少天,判断能不能被7整除,整除+1
求:1901-2000年内,每月的一号是星期天的总天数。
注意题目:
1.1901年开始
2.星期日
3.题目说1900.1.1是星期一,求解的不是星期一,也不是从1900年开始的
思路:
1.年,月,是否星期日,主要这三个就好了。
2.判断是不是闰年
3.从1901年开始
4.先找出每个月的1号距1900年1.1有多少天,判断能不能被7整除,整除+1
package projecteuler11to20; import java.util.Date; class level19{ void solve(){ int starYear=1900; int endYear=2000; int sumSunday=0; int DaysMonth=0; int DaysYear=0; for(int year=starYear;year<=endYear;year++){ for(int month=1;month<=12;month++){ if(year==1900 && month==1){ sumSunday=0; }else{ DaysMonth=DaysYear+getDaysMonthFirst(year,month); if(year>=1901 && DaysMonth%7==0){ sumSunday+=1; } // System.out.println(DaysMonth+" :"+DaysMonth%7 +":"+getDaysMonthFirst(year,month)+":"+getYearDays(year)); } } DaysYear=DaysYear+getYearDays(year); // System.out.println("New Year"); } System.out.println("1901-2000年每月的第一天是周日的个数:"+sumSunday); } int getDaysMonthFirst(int year,int month){ int days=0; int months[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if(month>=3&&JudgeLeapYear(year)==true){ months[2]+=1; } for(int i=0;i<month;i++){ days+=months[i]; } days+=1; return days; } int getYearDays(int year){ // int months[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; boolean flag=JudgeLeapYear(year); if(flag==true){ return 366; }else{ return 365; } } boolean JudgeLeapYear(int year){ boolean flag=false; if (year%400 == 0 || (year%4 == 0 && year%100 != 0)){ flag=true; } return flag; } } public class Problem19 { public static void main(String[] args){ Date beginTime=new Date(); new level19().solve();//171 Date endTime=new Date(); long Time = endTime.getTime()-beginTime.getTime(); System.out.println("Time:"+Time/1000+"秒"+Time%1000+"毫秒"); } }
相关文章推荐
- 欧拉工程第19题 20世纪有多少个星期日是当月的第一天
- 欧拉工程第四题 找出两个三位数乘积构成的回文
- Java进阶之欧拉工程 第十六篇【2的1000次方各位之和为多少】
- 欧拉工程第10题 计算两百万以下所有质数的和
- 欧拉工程第24题 0,1,2,3,4,5,6,7,8,9的第100万个字典排列是什么
- 欧拉工程第五题 找出最小能被1-20中每个数整除的数
- 欧拉工程第23题:Non-abundant sums
- 欧拉工程第32题:Pandigital product sum
- Java进阶之欧拉工程 第四篇【持续更新】
- Java 欧拉工程 第二十九篇【a的b次方(2≤a,b≤100)中共有多少个不同的数】
- 欧拉工程第2题 在斐波那契数列中,找出4百万以下的项中值为偶数的项之和
- 欧拉工程第21题 计算10000以下所有相亲数之和
- 欧拉工程第25题 第一个包含1000位数字的斐波那契数列项是第几项
- 欧拉工程第16题
- Java 欧拉工程 第二十二篇【 名字得分总和】
- Java 欧拉工程 第三十一篇【考察英国货币面值的组合问题】
- 欧拉工程第56题:Powerful digit sum
- 我的欧拉工程之路_11
- 欧拉工程第六题 平方和与和平方的差是多少
- 欧拉工程第24题:Lexicographic permutations