import java.util.*; public class Main { public static void main(String []args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int a[]=new int[7]; for(int i=1900;i<=1900+n-1;i++) { for(int j=1;j<=12;j++) { int m=j,y=i; if(m==1||m==2) { m+=12; y--; } int d=13; switch((d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7) { case 0:a[2]++;break; case 1:a[3]++;break; case 2:a[4]++;break; case 3:a[5]++;break; case 4:a[6]++;break; case 5:a[0]++;break; case 6:a[1]++;break; } } } for(int i=0;i<7;i++) { System.out.print(a[i]+" "); } } }分析时间
时间: 2023-12-06 13:40:45 浏览: 253
java代码-import java.util.Scanner;
这段代码实现的功能是输入一个年数n,计算从1900年开始到1900年+n-1年的每个月的13号是星期几,并统计每个星期几出现的次数。最后输出每个星期几出现的次数。
具体实现过程:
1. 首先使用Scanner类获取用户输入的年数n。
2. 创建一个长度为7的整型数组a,用于统计每个星期几出现的次数。数组下标0-6分别对应星期天到星期六。
3. 使用两个for循环,外层循环遍历从1900年开始到1900年+n-1年的每一年,内层循环遍历每个月份。
4. 对于每个月份,首先判断是不是1月或2月,如果是,则将月份加12,年份减1(因为在计算公式中,1月和2月被视为上一年的13月和14月)。
5. 接下来根据蔡勒公式计算该月13号是星期几,并将相应的星期几出现次数加1。
6. 最后遍历整个数组a,输出每个星期几出现的次数。
需要注意的是,蔡勒公式只适用于格里高利历(即我们现在使用的公历),对于其他历法可能不适用。
阅读全文