【java_蓝桥杯算法训练】算法训练 黑色星期五
        【摘要】 算法训练 黑色星期五资源限制时间限制:1.0s   内存限制:512.0MB问题描述  有些西方人比较迷信,如果某个月的13号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是“诸事不宜”。请你编写一个程序,统计出在某个特定的年份中,出现了多少次既是13号又是星期五的情形,以帮助你的迷信朋友解决难题。  说明:(1)一年有365天,闰年有366天,所谓闰年,即能被4整除且不能被100整除...
    
    
    
    算法训练 黑色星期五
资源限制
 时间限制:1.0s   内存限制:512.0MB
问题描述
 
  有些西方人比较迷信,如果某个月的13号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是“诸事不宜”。请你编写一个程序,统计出在某个特定的年份中,出现了多少次既是13号又是星期五的情形,以帮助你的迷信朋友解决难题。
说明:(1)一年有365天,闰年有366天,所谓闰年,即能被4整除且不能被100整除的年份,或是既能被100整除也能被400整除的年份;(2)已知1998年1月1日是星期四,用户输入的年份肯定大于或等于1998年。
输入格式:输入只有一行,即某个特定的年份(大于或等于1998年)。
输出格式:输出只有一行,即在这一年中,出现了多少次既是13号又是星期五的情形。
输入输出样例
样例输入
   1998
   
  
 
  样例输出
   3
  
 
  分析:
本题的题目是求出在一年中即是13日又是星期五的日期,给出已知1998年1月1日是星期四以及求闰年的方法(即能被4整除且不能被100整除的年份,或是既能被100整除也能被400整除的年份;)我们可以可以按照1998年1月1日递推出输入值n的值,然后在判断是否是闰年,闰年和平年的区别无非就是平年二月28日,闰年二月29日,其他月份和平年的一样,一、三、五、七、八、十、十二月31天,二、四、六、九、十一月是30天。定义一个sum用来累加n年的即是13日又是星期五的日期。日期使用取模方法来进行循环,0为星期一,6为星期日,去摸7即可。最后进行输出即可。下面我们看代码:
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		//输入年份
		int n=sc.nextInt();
		//用来累加月份既是13日又是星期五的日期
		int sum=0;
		int x=2;
		//3等于星期四
		//进行循环遍历
		for(int i=1998;i<=n;i++) {
			//用来累加符合条件的sum
			sum=0;
			//用来判断是否是闰年
			if((i%4==0&&i%100!=0)||(i%100==0&&i%400==0)) {
				//遍历一年中的每个月
				for(int j=1;j<13;j++) {
					//判断是不是31天的月份
					if(j==1||j==3||j==5||j==7||j==8||j==10||j==12) {
						for (int j2 = 1; j2 < 32; j2++) {
							//星期自加
							x++;
							//去摸7用来保证循环是0-6用来表示一周
							x=x%7;
							//判断既是13日又是星期五的日期,然后累加
							if(x==4&&j2==13) {
								sum++;
							}
						}
						//判断是不是闰年的二月29日
					}else if(j==2){
						for (int j2 = 1; j2 < 30; j2++) {
							x++;
							x=x%7;
							if(x==4&&j2==13) {
								sum++;
								
							}
						}
					}else {
						//30日的月份进行遍历
						for (int j2 = 1; j2 < 31; j2++) {
							x++;
							x=x%7;
							if(x==4&&j2==13) {
								sum++;
							}
						}
					}
					
				}
			}else {
				//平年同上,除了判断二月的是28天,和上边判断闰年月份一样
				for(int j=1;j<13;j++) {
					if(j==1||j==3||j==5||j==7||j==8||j==10||j==12) {
						for (int j2 = 1; j2 < 32; j2++) {
							x++;
							x=x%7;
							if(x==4&&j2==13) {
								sum++;
							}
						}
		
					}else if(j==2){
						//平年二月28日
						for (int j2 = 1; j2 < 29; j2++) {
							x++;
							x=x%7;
							if(x==4&&j2==13) {
								sum++;
							}
						}
					}else {
						for (int j2 = 1; j2 < 31; j2++) {
							x++;
							x=x%7;
							if(x==4&&j2==13) {
								sum++;
							}
						}
				
			}
			
		}
			}
}
		System.out.println(sum);
	}
}
            【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
                cloudbbs@huaweicloud.com
                
            
        
        
        
        
        
        
        - 点赞
- 收藏
- 关注作者
 
             
           
评论(0)