如果生活突然向你发难

躲不过那就迎面而战

所谓无坚不摧

是能享受最好的,也能承受最坏的

大不了逢山开路,遇水搭桥

若你决定灿烂,山无遮,海无拦

A:特殊日期

问题描述

对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从 1900 年 1 月 1 日至 9999 年 12 月 31日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。

例如,2022 年 11 月 13 日满足要求,因为 2+0+2+2=(1+1)+(1+3) 。

请提交满足条件的日期的总数量。

题解思路:通过 time包直接进行读取判断即可

参考代码:

import java.time.*;
public class Main {public static void main(String[] args) {LocalDate date = LocalDate.of(1900,1,1);int count=0;while(true){if(date.getYear()==9999&&date.getMonth().getValue()==12&&date.getDayOfMonth()==31) break;int x1 = date.getYear()%10;int x2 = date.getYear()/10%10;int x3 = date.getYear()/100%10;int x4 = date.getYear()/1000;int y1 = date.getMonth().getValue()%10;int y2 = date.getMonth().getValue()/10;int y3 = date.getDayOfMonth()%10;int y4 = date.getDayOfMonth()/10;if((x1+x2+x3+x4)==(y1+y2+y3+y4)) count++;date = date.plusDays(1);}System.out.println(count);}
}

B:重合次数

问题描述

在同一天中, 从上午 6 点 13 分 22 秒到下午 14 点 36 分 20 秒, 钟表上的 分针和秒针一共重合了多少次?

注意时针、分针、秒针都围绕中心敳匀速运动。

题解思路:

误区在于一个小时重合60次,实际上每个小时只会重合59次,从早上6点到14点总共8小时,59*8=472,然后从13分22秒到35分22秒多有22次重合,而35分22秒多到36分20秒没有重合,因此结果:59*8*22=494

答案:

494

C:左移右移

问题描述

小蓝有一个长度为 N 的数组, 初始时从左到右依次是 1,2,3,…N。

之后小蓝对这个数组进行了 M 次操作, 每次操作可能是以下 2 种之一:

  1. 左移 x, 即把 x 移动到最左边。

  2. 右移 x, 即把 x 移动到最右边。

请你回答经过 M 次操作之后, 数组从左到右每个数是多少?

输入格式

第一行包含 2 个整数, N 和 M 。

以下 M 行每行一个操作, 其中 “L x "表示左移 x,"R x "表示右移 x 。

输出格式

输出 N 个数, 代表操作后的数组。

样例输入

5 3
L 3
L 2
R 1

样例输出

2 3 4 5 1

样例说明

样例中的数组变化如下:

[1,2,3,4,5]→[3,1,2,4,5]→[2,3,1,4,5]→[2,3,4,5,1][1,2,3,4,5]→[3,1,2,4,5]→[2,3,1,4,5]→[2,3,4,5,1]

评测用例规模与约定

对于 50% 的评测用例, 1≤N,M≤10000

对于 100% 的评测用例, 1≤N,M≤200000,1≤x≤N

题解思路:

我们可以知道的结论:最后移动的数一定在两边,且不会因为前面移动过这个数而对这个数产生影响,而前面的数会因为后面的数移动而改变位置,那么我们是否可以逆向判断,固定 两边的数,其他没有移动过的数按照从左到右顺序排列

那我们需要用到哪些东西?

一个长M的数组,去存储移动信息

一个长N+1的boolean数组,去判断1--N是否移动使用

一个长为N的数组,去存储最终结果并用于输出

参考代码:

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n=sc.nextInt();int m=sc.nextInt();char []s=new char[m];//存储输入的字符int []arr=new int[m];//存储输入的值boolean []bl=new boolean[n+1];//判断是否用于交换int []jg=new int[n];//存储结果for(int i=0;i<m;i++){//输入s[i]=sc.next().charAt(0);arr[i]=sc.nextInt();}int l=0,r=n-1;for(int i=m-1;i>=0;i--){//逆序去判断每一个数if(s[i]=='L'&&bl[arr[i]]==false){//说明这个数在最左边且未被使用jg[l]=arr[i];bl[arr[i]]=true;l++;//左端点+1,下一个移到最左边的话会在这个数的右边}else if(s[i]=='R'&&bl[arr[i]]==false){//说明这个数在最右边且未被使用jg[r]=arr[i];bl[arr[i]]=true;r--;//右端点-1,,下一个移到最右边的话会在这个数的左边}}for(int i=1;i<=n;i++){//去判断所有数字中没有使用过的if(bl[i]==false){//进行存储jg[l]=i;l++;}}for(int i=0;i<n;i++) System.out.print(jg[i]+" ");//输出}
}

D:近似gcd

问题描述

小蓝有一个长度为 nn 的数组 A=(a1,a2,⋯ ,an), 数组的子数组被定义为从 原数组中选出连续的一个或多个元素组成的数组。数组的最大公约数指的是数 组中所有元素的最大公约数。如果最多更改数组中的一个元素之后, 数组的最 大公约数为 g, 那么称 g 为这个数组的近似 GCD。一个数组的近似 GCD 可能 有多种取值。

具体的, 判断 g 是否为一个子数组的近似 GCD 如下:

  1. 如果这个子数组的最大公约数就是 g, 那么说明 g 是其近似 GCD。

  2. 在修改这个子数组中的一个元素之后 (可以改成想要的任何值), 子数 组的最大公约数为 g, 那么说明 g 是这个子数组的近似 GCD。

小蓝想知道, 数组 A 有多少个长度大于等于 2 的子数组满足近似 GCD 的 值为 g 。

输入格式

输入的第一行包含两个整数 n,g, 用一个空格分隔, 分别表示数组 A 的长 度和 g 的值。

第二行包含 nn 个整数 a1,a2,⋯ ,an, 相邻两个整数之间用一个空格分隔。

输出格式

输出一行包含一个整数表示数组 A 有多少个长度大于等于 2 的子数组的近 似 GCD 的值为 g

样例输入

5 3
1 3 6 4 10

样例输出

5

样例说明

满足条件的子数组有 5 个:

[1,3][1,3] : 将 1 修改为 3 后, 这个子数组的最大公约数为 3 , 满足条件。

[1,3,6][1,3,6] : 将 1 修改为 3 后, 这个子数组的最大公约数为 3 , 满足条件。

[3,6]:这个子数组的最大公约数就是 3 , 满足条件。

[3,6,4][3,6,4] : 将 4 修改为 3 后, 这个子数组的最大公约数为 3 , 满足条件。

[6,4][6,4] : 将 4 修改为 3 后, 这个子数组的最大公约数为 3 , 满足条件。

评测用例规模与约定

对于 20%20% 的评测用例, 2≤n≤10^2 ;

对于 40%40% 的评测用例, 2≤n≤10^3;

对于所有评测用例, 2≤n≤10^5,1≤g,ai≤10^9。

题解思路:

对于每一个数,我们先去判断这个数是否为g的倍数,我们将非g倍数的数提取出来存放对应下标,在[L,R]区间中,按照2/3/4.....R-L个数的数组一共存在:(1+2+...+R-L-1)*(R-L-1)/2个

而在区间内最多只能存在一个数不是g的倍数

我们按照每一个提取的数为节点,进行与前后数的组合统计,得到公式如下:

((arr[r]-arr[r-2]-2)+(arr[r]-arr[r-1]-1))*(arr[r-1]-arr[r-2])/2

最终特判所有数都是g的倍数与只有一个数是g的倍数的情况即可

PS: 不知道怎么说比较清楚,通过等差公式推出来的,可以看代码试试

参考代码:

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);long n=sc.nextLong();int m=sc.nextInt();long []arr=new long[100010];int l=1;//输入和提取非m倍数的数for(long i=1;i<=n;i++){int a=sc.nextInt();if(a%m!=0){arr[l]=i;l++;}}arr[l]=n+1;//最有端点设置一个long sum=0;for(int i=2;i<l;i++){//公式代入sum+=((arr[i]-arr[i-2]-2)+(arr[i]-arr[i-1]-1))*(arr[i-1]-arr[i-2])/2;}if(l<=2){//只有一个非m倍数的数或者全是m倍数的数System.out.println(n*(n-1)/2);return;}//最右端点的特殊求和sum+=(arr[l]-arr[l-2]-1)*(arr[l]-arr[l-2]-2)/2;System.out.println(sum);}
}

蓝桥冲刺31天之316相关推荐

  1. 蓝桥冲刺31天之第七天

    目录 A:三角回文数 B:数数 C:数组切分 D:倍数问题 一星陨落,黯淡不了星空灿烂: 一花凋零,荒芜不了整个春天. 如果命运是世界上最烂的编剧, 你就要争取做人生最好的演员. 即使生活在阴沟里,依 ...

  2. 蓝桥冲刺31天打卡—Day14

    目录 1.带分数 题目描述 思路 AC代码 2.走迷宫 题目描述 思路 AC代码 3.蓝桥幼儿园 题目描述 思路 并查集模板 AC代码 4.跳石头 题目描述 思路 AC代码 1.带分数 题目描述 题目 ...

  3. 蓝桥冲刺31天之白色情人节

    生活再平凡,也是限量版 总要热爱着什么,才不会被这无趣的生活吞没 若心有所向,平凡的日子也会泛着光 心怀浪漫宇宙,也珍惜人间日常 A:卡片 题目描述: 小蓝有很多数字卡片,每张卡片上都是数字 0 到 ...

  4. 蓝桥冲刺31天打卡—Day11

    1.天干地支 题目链接 输入样例 2020 输出样例 gengzi 思路 暴力模拟 题目中告诉我们2020年是庚子年,而庚是天干中的第七个(天干数组下标从0开始),所以要要对输入数加6后再模10,地枝 ...

  5. 蓝桥冲刺31天打卡—Day10

    1.

  6. 蓝桥杯31天冲刺之十一 [java]

    文章目录 天干地支(模拟) 包子凑数(动态规划) 求值(暴力) 青蛙跳杯子(BFS) 天干地支(模拟) 题目链接:https://www.lanqiao.cn/problems/1029/learni ...

  7. 蓝桥杯31天冲刺之十 [java]

    文章目录 扫地机器人 全球变暖 机器人行走 数的幂次 扫地机器人 题目链接:https://www.lanqiao.cn/problems/199/learning/ 这个感觉有点难,放弃了 全球变暖 ...

  8. 蓝桥杯31天冲刺之二十三 [java]

    文章目录 打包 约数个数 寻找三位数 第二点五个不高兴的小明 打包 题目链接:http://lx.lanqiao.cn/problem.page?gpid=T2978 这个是一道二分的题目,题目需要求 ...

  9. 蓝桥杯31天冲刺打卡(Day11)

    Hallo,大家好!不知不觉就过了11天了,让我们共同努力吧! 目录 A 天干地支 解析: 代码: B 包子凑数 解析: 代码: C 求值 解析: 代码: D 青蛙跳杯子 解析: 代码: A 天干地支 ...

最新文章

  1. TCP/IP详解--学习笔记(12)-TCP的超时与重传
  2. IDEA中无法import自己工程中类的问题解决方法
  3. Linux下编译带x264的ffmpeg的方法
  4. Rethinking Design Patterns - from Jeff Atwood
  5. puppeteer( Nodejs 版 selenium )快速入门
  6. 怎样在linux中创建硬盘,在linux中添加新硬盘并创建LVM组
  7. 推荐一个腾讯大神的免费直播课!
  8. 阶段3 2.Spring_04.Spring的常用注解_7 改变作用范围以及和生命周期相关的注解
  9. 微积分手机版 pk 清华大学微积分教程
  10. 什么是Web应用程序防火墙?
  11. 泛函分析(空间部分)知识点总结
  12. U3D Shader
  13. 机器人城阳_玄德机器人墙板码板机城阳性能优异
  14. [Android]网页内图片点击查看大图/识别二维码/下载
  15. AndroidStudio项目配置第三方libray库
  16. 2020年小学几年级有计算机课,2019-2020年最新小学信息技术三年级上册第1课初识计算机备课教学参考.doc...
  17. 生成艺术or游戏?无限可能的体验#Wayfinder-探索这片土地的诗意
  18. JAVA飞机移动斜着走_java复习 做一个简易的飞机游戏
  19. 无源域适应(SFDA)方向的领域探究和论文复现(第一部分)
  20. 当前上下文不存在ScriptManager

热门文章

  1. 团体程序设计天梯赛-练习集——L1-063 吃鱼还是吃肉(类数组、方法定义和使用)
  2. 电站锅炉烟气SCR脱硝改造
  3. Android笔记【3】---多媒体播放/广播与服务
  4. C语言之判断奇数偶数
  5. python 包含语句_如何检查句子是否包含Python中的某个单词然后执行操作?
  6. Spring boot 连接数据报时区问题
  7. php 有道翻译api,PHP微信开发之有道翻译
  8. ZBrush对称镜面投射
  9. java计算机毕业设计-智慧农业水果销售系统MyBatis+系统+LW文档+源码+调试部署
  10. 基于51单片机的心率脉搏计测量报警全套设计