七十七、Java算法练习打卡(三题)

举报
托马斯-酷涛 发表于 2022/05/26 00:29:38 2022/05/26
【摘要】 文章目录 🔥题目一 题目描述 运行限制 题解 🔥题目二 题目描述 输入\出格式  样例说明 评测用例规模与约定 运行限制 题解 🔥题目三 题目描述 输入\出描述 输入输出样例  运行限制 题解 🔥题目一 题目描述 本题为填空题,只需要算出结果后,...

文章目录

🔥题目一

题目描述

运行限制

题解

🔥题目二

题目描述

输入\出格式

 样例说明

评测用例规模与约定

运行限制

题解

🔥题目三

题目描述

输入\出描述

输入输出样例

 运行限制

题解


🔥题目一

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

如果一个正整数只有 11 和它本身两个约数,则称为一个质数(又称素数)。

前几个质数是:2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, · · 。

如果一个质数的所有十进制数位都是质数,我们称它为纯质数。例如:2,3, 5, 7, 23, 37都是纯质数,而 11, 13, 17, 19, 29, 31不是纯质数。当然 1, 4, 35也不是纯质数。

请问,在 11 到 20210605中,有多少个纯质数?


运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

题解


  
  1. import java.util.Scanner;
  2. public class Main {
  3. public static void main(String[] args) {
  4. int count = 0;
  5. for ( int i = 1 ; i <= 20210605 ; i++ ){
  6. if ( isprinum(i) ){
  7. if ( fun(i) ){
  8. count++;
  9. }
  10. }
  11. }
  12. System.out.println(count);
  13. }
  14. //判断质数
  15. public static boolean isprinum(int num){
  16. //注意0不是素数
  17. if ( num == 1 || num == 0 ){
  18. return false;
  19. }
  20. for ( int i = 2 ; i <= Math.sqrt(num) ; i++ ){
  21. if( num % i == 0){
  22. return false;
  23. }
  24. }
  25. return true;
  26. }
  27. //判断十进制位数是不是质数
  28. public static boolean fun(int peinum){
  29. while(peinum > 0){
  30. int n = peinum % 10;
  31. if ( !isprinum(n) ){
  32. return false;
  33. }
  34. peinum = peinum / 10;
  35. }
  36. return true;
  37. }
  38. }

        注:Math.sqrt方法为求此数的正平方根

🔥题目二

题目描述

你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。

那么这套砝码最少需要包含多少个砝码?

注意砝码可以放在天平两边。


输入\出格式

输入包含一个正整数 N。

输出一个整数代表答案。

 样例说明

3 个砝码重量是 1、4、6 可以称出 1至 7的所有重量。

1 = 1;

2 = 6 − 4(天平一边放 6,另一边放 4);

3 = 4 − 1;

4 = 4;

5 = 6 − 1;

6 = 6;

7 = 1 + 6;

少于 3 个砝码不可能称出 1 至 7 的所有重量。

评测用例规模与约定

对于所有评测用例,1 ≤ N ≤ 1000000000。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 512M

题解


  
  1. import java.util.Scanner;
  2. public class Main {
  3. public static void main(String[] args) {
  4. Scanner sc = new Scanner(System.in);
  5. int n = sc.nextInt();
  6. sc.close();
  7. int weight = 1;
  8. int count = 1;
  9. int total = 1;
  10. while (total < n) {
  11. count++;
  12. weight *= 3;
  13. total += weight;
  14. }
  15. System.out.println(count);
  16. }
  17. }
砝码序号 砝码重量 总重量(可以称出的最大重量)
1 1 1
2 3 4
3 9 13
4 27 40
...... ...... ......
count=count+1 weight=weight*3 total=total+weight
  • 当count=1时,砝码只有一个,重量为1,3^count-1=1
  • 当count=2时,砝码组合为1、3,是首项为1,公比为3的等比数列
  • 设count=k(k>=2)时,砝码组合是一个首项为1公比为3等比数列,末项为3^count-1,total=(3^count-1)/2

🔥题目三

题目描述

小蓝负责花园的灌溉工作。

花园可以看成一个 n 行 m 列的方格图形。中间有一部分位置上安装有出水管。

小蓝可以控制一个按钮同时打开所有的出水管,打开时,有出水管的位置可以被认为已经灌溉好。

每经过一分钟,水就会向四面扩展一个方格,被扩展到的方格可以被认为已经灌溉好。即如果前一分钟某一个方格被灌溉好,则下一分钟它上下左右的四个方格也被灌溉好。

给定花园水管的位置,请问 k 分钟后,有多少个方格被灌溉好?


输入\出描述

输入的第一行包含两个整数 n, m。

第二行包含一个整数 t,表示出水管的数量。

接下来 t 行描述出水管的位置,其中第 i 行包含两个数 r, c表示第 r 行第 c 列有一个排水管。

接下来一行包含一个整数 k。

其中,1<=n,m<=100,1<=t<=10,1<=k<=100

输出一个整数,表示答案。

输入输出样例

 运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

题解


  
  1. import java.util.Scanner;
  2. public class Main {
  3. public static void main(String[] args) {
  4. Scanner sc=new Scanner(System.in);
  5. int n=sc.nextInt();//行数
  6. int m=sc.nextInt();//列数
  7. int t=sc.nextInt();//出水口数
  8. int a,b;
  9. int [][]arr=new int[n+2][m+2];//经过时间后的湿地信息
  10. int [][]brr=new int[n+1][m+1];//当前时间湿地信息
  11. for (int i=0;i<t;i++){
  12. a=sc.nextInt();
  13. b=sc.nextInt();
  14. arr[a][b]=1;
  15. brr[a][b]=1;
  16. }
  17. int count=0;
  18. int k=sc.nextInt();//时间
  19. for (int i=1;i<=k;i++){//时间循环
  20. for (int j=1;j<=n;j++){//寻找当前湿地
  21. for (int s=1;s<=m;s++){//寻找当前湿地
  22. if (brr[j][s]==1){//当前为湿地
  23. arr[j-1][s]=1;//经过该时间后,此地为湿地
  24. arr[j+1][s]=1;//经过该时间后,此地为湿地
  25. arr[j][s-1]=1;//经过该时间后,此地为湿地
  26. arr[j][s+1]=1;//经过该时间后,此地为湿地
  27. }
  28. }
  29. }
  30. for (int j=1;j<=n;j++){//更改当前湿地信息(即经过该时间后为湿地)
  31. for (int s=1;s<=m;s++){
  32. if (arr[j][s]==1){
  33. brr[j][s]=1;
  34. if (i==k){//到达最后的时间
  35. count++;//统计数量
  36. }
  37. }
  38. }
  39. }
  40. }
  41. System.out.println(count);
  42. }
  43. }

 出水管为湿地,湿地每分钟延伸,时间为k,总共延伸k次,外层循环为1-k,延伸后判断湿地位置,即为二层循环,判断完湿地,它的上下左右都会变为新的湿地,时间截止,计算所有湿地。

文章来源: tuomasi.blog.csdn.net,作者:托马斯-酷涛,版权归原作者所有,如需转载,请联系作者。

原文链接:tuomasi.blog.csdn.net/article/details/123356200

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。