寒假每日一题day12——ACWing1341. 十三号星期五

编程入门 行业动态 更新时间:2024-10-26 17:18:51

<a href=https://www.elefans.com/category/jswz/34/1764831.html style=寒假每日一题day12——ACWing1341. 十三号星期五"/>

寒假每日一题day12——ACWing1341. 十三号星期五

十三号星期五

【题目描述】

1341. 十三号星期五

月份口诀巧记:

一三五七八十腊(12月),
三十一天永不zhi差;
四六九冬(11月)三十日;
平年二月二十八,闰年二月把一加。

1 3 5 7 8 10 12 —> 31天
4 6 9 11 —> 30天
2 -->28(平)/29(润)

【思路】
枚举每一年每一月的13号是从1900年1月1日开始的第几天。

import java.io.*;
class Main{static int [] cnt = new int[7];//除第一年的1月份是加13(再特判) 其他月份的13号都是加上前一个月的天数//依次为1月到12月所需加的天数static int days[] ={31,31,0,31,30,31,30,31,31,30,31,30};public static int isRun(int y){if( (y % 4 == 0 && y % 100 !=0)||( y % 400 == 0) )return 29;else return 28 ;}public static void solve(int n){//计算每个月的13号是从1900年1月1日开始算起的第几天int res = 0;for(int y = 0; y < n; y++){for(int m = 1; m <= 12; m++){if( y==0 && m == 1) res += 13; //第一年的第一个月else if( m == 3 ) res += isRun(1900+y);     //2月特判else if( y == n-1 && m == 12 ) res += 13;  //最后一年的最后一个月要特判一下else res += days[ m-1 ];cnt [ res%7 ] ++;}}}public static void main(String  args[]) throws Exception{BufferedReader  bf = new BufferedReader(new InputStreamReader(System.in));int N = Integer.parseInt(bf.readLine());//cnt 存储顺序是:星期天 星期一 星期二……星期六solve(N);for(int i = 6, j = 0 ; j < 7; i = (i+1)%7,j++)System.out.print(cnt[i]+" ");// 关闭输入流bf.close();}
}

快速读入

import java.io.*;
要抛出异常。

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(reader.readLine());
String[] arrStr = reader.readLine().split(" ");
for (int i = 0; i < n; i++)arr[i] = Integer.parseInt(arrStr[i]);// 打印结果
System.out.println(mergeSort(0, n - 1));
// 关闭输入流
reader.close();

更多推荐

寒假每日一题day12——ACWing1341. 十三号星期五

本文发布于:2024-03-08 20:50:44,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1722299.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:寒假   星期   十三号

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!