- import java.io.*;
- public class DoSomeThing {
-
- /**
- *写一个程序来计算在n年里13日落在星期一,星期二......星期日的次数.
- 这个测试从1900年1月1日到1900+n-1年12月31日.n是一个非负数且不大于400.
- 这里有一些你要知道的:1900年1月1日是星期一.
- 样例输入:
- 20
- 样例输出:
- 36 33 34 33 35 35 34
- */
- public static void main(String[] args) throws IOException{
- // TODO Auto-generated method stub
- int a[]={0,31,59,90,120,151,181,212,243,273,304,334};//平年每个月份1日到1月1日的天数
- int b[]={0,31,60,91,121,152,182,213,244,274,305,335};//闰年每个月份1日到1月1日的天数
- int []s=new int[7];//存储星期数
- int []m=new int[400];
- int n=0,i,j;
- String line=null;
- BufferedReader bfrd=new BufferedReader(new InputStreamReader(System.in));
- while((line=bfrd.readLine())!=null){
- n=Integer.parseInt(line);
- break;
- }
- for(i=1900;i<1900+n;i++){
- m[i-1899]=dayOfYear(i)+m[i-1900];//计算i年一月一日到1990年一月一日的天数,分别存储到m集合中
- if(leapYear(i))
- for(j=0;j<12;j++)
- s[(b[j]+13+m[i-1900])%7]++;//闰年(i年j月13号到1990年一月一日的天数)余7
- else
- for(j=0;j<12;j++)
- s[(a[j]+13+m[i-1900])%7]++;//平年(i年j月13号到1990年一月一日的天数)余7
- }
- System.out.println(s[6]);//星期六
- System.out.println(s[0]);//星期天
- for(i=1;i<5;i++){
- System.out.println(s[i]);//星期一~五
- }
-
-
-
- }
- public static boolean leapYear(int n)//判断某一年是否为闰年
- {
- if(n%4==0&&n%100!=0)
- return true;
- if(n%400==0)
- return true;
- return false;
- }
- public static int dayOfYear(int n)//获取某一年的天数
- {
- if(leapYear(n))
- {
- return 366;
- }
- else
- return 365;
- }
- }
复制代码 |