?今日学习?
1、纯质数的求解问题1、纯质数的求解问题
2、BFS暴力求解问题
3、最少砝码规律问题
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如果一个正整数只有 11 和它本身两个约数,则称为一个质数(又称素数)。前几个质数是:2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, · · ·2,3,5,7,11,13,17,19,23,29,31,37,??? 。如果一个质数的所有十进制数位都是质数,我们称它为纯质数。例如:2,3, 5, 7, 23, 372,3,5,7,23,37 都是纯质数,而 11, 13, 17, 19, 29, 3111,13,17,19,29,31 不是纯质数。当然 1, 4, 351,4,35 也不是纯质数。请问,在 11 到 2021060520210605 中,有多少个纯质数?
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
package Day_Day_work;
public class 纯质数 {
public static void main(String[] args) {
int ans = 0;
int n = 20210605;
for(int i=2;
i<=n;
i++) {
if (A(i)) {
if (B(i)) {
ans++;
}
}
}
System.out.println(ans);
}
/*
暴力循环遍历
*/
public static boolean A(int n) {
if (n == 0 || n == 1) return false;
for (int i = 2;
i * i <= n;
i++) {
if (n % i == 0) return false;
}
return true;
}public static boolean B(int n) {
int t=0;
while(n>0){
t=n%10;
if(!A(t))return false;
n=n/10;
}
return true;
}
}
题解分析:2、BFS暴力求解问题
主要将题目拆分成两个部分:
(1)求解该数是否为质数
(2)求解该数中的每一个十进制位是否为质数
(3)无脑暴力解,因为该题是填空题,所以忽略超时的问题
难点分析:
(1)容易眼高手低,暴力求解的问题很容易漏掉一些细节,比如说0不是质数等等
题目描述
小蓝负责花园的灌溉工作。花园可以看成一个 nn 行 mm 列的方格图形。中间有一部分位置上安装有出水管。小蓝可以控制一个按钮同时打开所有的出水管,打开时,有出水管的位置可以被认为已经灌溉好。每经过一分钟,水就会向四面扩展一个方格,被扩展到的方格可以被认为已经灌溉好。即如果前一分钟某一个方格被灌溉好,则下一分钟它上下左右的四个方格也被灌溉好。给定花园水管的位置,请问 kk 分钟后,有多少个方格被灌溉好?
输入描述
输入的第一行包含两个整数 n, mn,m。
第二行包含一个整数 tt,表示出水管的数量。
接下来 tt 行描述出水管的位置,其中第 ii 行包含两个数 r, cr,c 表示第 rr 行第 cc 列有一个排水管。
接下来一行包含一个整数 kk。
其中,1≤n,m≤100,1≤t≤10,1≤k≤100。
输出描述
输出一个整数,表示答案。
输入输出样例
示例 1
输入:
3 6 2 2 2 3 4 1
输出:
9
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
package Day_Day_work;
import java.util.Scanner;
/**
* @author yx
* @date 2022-03-08 19:30
*/
public class 花园浇水问题__BFS {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n=scanner.nextInt();
int m=scanner.nextInt();
int [][] A=new int[n+2][m+2];
int [][] B=new int[n+2][m+2];
int t=scanner.nextInt();
for(int i=1;
i<=t;
i++){
int x=scanner.nextInt();
int y=scanner.nextInt();
A[x][y]=1;
B[x][y]=1;
}
int k=scanner.nextInt();
for (int i=1;
i<=k;
i++){
for (int q=1;
q<=n;
q++){
for (int p=1;
p<=m;
p++){
if(A[q][p]==1){
B[q-1][p]=1;
B[q+1][p]=1;
B[q][p+1]=1;
B[q][p-1]=1;
}
}
}
A=B.clone();
}
int ans=0;
for (int i = 1;
i <=n ;
i++) {
for (int j=1;
j<=m;
j++){
if(A[i][j]==1)ans++;
}
}
System.out.println(ans);
}
}
题解分析:3、最少砝码规律问题
(1)循环更新灌水的方格数
难点分析:
(1)创建两个数组,一个数组用来更新,一个数组用来存储
(2)每次更新完后,用来存储的数组都要克隆那个用来更新的数组
(3)增加数组的空间大小,起始位置从下标为1开始,避免数组越界等一系列问题
问题描述
你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意 小于等于 NN 的正整数重量。那么这套砝码最少需要包含多少个砝码?注意砝码可以放在天平两边。
输入格式
输入包含一个正整数 N。
输出格式
输出一个整数代表答案。
样例输入
7
样例输出
3
样例说明
33 个砝码重量是 1、4、61、4、6,可以称出 11 至 77的所有重量。
1 = 1;1=1;
2 = 6 ? 42=6?4(天平一边放 66,另一边放 44);
3 = 4 ? 1;3=4?1;
4 = 4;4=4;
5 = 6 ? 1;5=6?1;
6 = 6;6=6;
7 = 1 + 6;7=1+6;
少于 33 个砝码不可能称出 11 至 77? 的所有重量。
评测用例规模与约定
对于所有评测用例,1 ≤ N ≤ 10000000001≤N≤1000000000。
运行限制
- 最大运行时间:1s
- 最大运行内存: 512M
package Day_Day_work;
import java.util.Scanner;
/**
* @author yx
* @date 2022-03-08 18:55
*/
//找规律题1,3,5,7,9
public class 最少砝码 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n=scanner.nextInt();
int i=1;
int sum=0;
int ans=0;
while (sum
题解分析:
(1)刚开始看题目的时候会有一些蒙蔽,似曾相识但又无从下手的感觉
(2)这个时候我们不妨动笔去举一些样例,来发现其中的规律
难点分析:
(1)很难从中去发现一些规律,需要多枚举几个样例
(2)1、3、9砝码可以确定最大值13;1、3、9、27可以确定最大值40....找到其中的规律
文章图片
【蓝桥杯|【蓝桥杯】每日一题冲刺国赛】
推荐阅读
- 蓝桥杯每日一刷|蓝桥杯每日一刷(第四天2016)
- 蓝桥杯每日一刷|蓝桥杯每日一刷(第六天)——暂会哈希
- 蓝桥杯|【蓝桥杯】看完这些,还在担心自己拿不到奖()
- 职场和发展|程序员从普通二本毕业的真实薪资,记录一路走来的路
- 约战蓝桥|蓝桥杯十大常见天阶功法——音之呼吸.肆之型.模拟
- Java|吊打级的福利,BAT上班是种什么样的体验 ?
- JAVA人生|春招来了,这波神仙打架你要不要参战
- 程序人生|和哥们一起去面试,公司用了他没用我
- LeetCode编程题解法汇总|力扣解法汇总798-得分最高的最小轮调