【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)