2023第十四届蓝桥杯Java B组个人题解

2024-02-27 1640阅读

温馨提示:这篇文章已超过450天没有更新,请注意相关的内容是否还可用!

💎蓝桥杯系列文章

欢迎大家阅读蓝桥杯文章专栏🍄🍄

2023第十四届蓝桥杯Java B组个人题解

🔥2023第十四届蓝桥杯模拟赛第二期个人题解(Java实现)

🔥2023第十四届蓝桥杯模拟赛第三期个人题解(Java实现)

🔥蓝桥杯备赛之动态规划篇——背包问题

🔥蓝桥杯备赛之动态规划篇——涂色问题(区间DP)

🔥蓝桥杯真题——单词分析(Java实现)

💎第十四届蓝桥杯Java B组真题

  • 💎蓝桥杯系列文章
  • 💎前言
  • 💎Part I 填空题
    • 🎯试题 A: 阶乘求和
      • 🌞问题分析
      • 💡Java代码
      • 💯结果
      • 🎯试题 B: 幸运数字
        • 🌞 问题分析
        • 💡Java代码
        • 💯 结果
        • 💎Part II 编程题
          • 🎯试题 C: 数组分割
            • 🌞问题分析
            • 💡 Java代码
            • 🎯试题 D: 矩形总面积
              • 🌞问题分析
              • 💡 Java代码
              • 🎯试题 F: 合并区域
                • 🌞问题分析
                • 💡 Java代码
                • 💎总结

                  2023第十四届蓝桥杯Java B组个人题解

                  💎前言

                  😘😘哈喽,大家好!今年的蓝桥杯终于落下帷幕啦!今天真的被整得怀疑人生了😭😭😭😭今年主打的就是陪伴😪赛后我重新做了这些题,写下这篇题解,跟大家交流交流!🍄

                  2023第十四届蓝桥杯Java B组个人题解

                  🙊🙊如果我写的内容有误,欢迎大家在评论区指正👏希望这篇文章对你有帮助❤❤同时欢迎关注我呦👇👇

                  2023第十四届蓝桥杯Java B组个人题解

                  雾霾愈让人窒息,我愈拼命争取一口清新;
                  黑暗愈遮盖大地,我们的心看得就愈清晰!

                  2023第十四届蓝桥杯Java B组个人题解

                  💎Part I 填空题

                  🎯试题 A: 阶乘求和

                  问题描述

                    令 S = 1! + 2! + 3! + … + 202320232023!,求 S 的末尾 9 位数字。

                    提示:答案首位不为 0。

                  答案提交

                    这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

                  🌞问题分析

                  🍒🍒这道题肯定不能按题目的要求算到 202320232023!,肯定有规律可循,所以不妨先算前50项,取最后9位看看结果。阶乘算出来的结果很大,用Long也会爆,可以用BigIneger,需要注意的是BigInteger的加减乘除需要调API实现。

                  💡Java代码

                  import java.math.BigInteger;
                  public class 试题A_阶乘求和 {
                  	public static void main(String[] args) {
                  		BigInteger n=new BigInteger("1");
                  		BigInteger sum=new BigInteger("0");
                  		for(int i=1;i
                  			n=n.multiply(new BigInteger(""+i));
                  			sum=sum.add(n);
                  			System.out.println("i="+i+"时,sum后九位是:"+sum.mod(new BigInteger(""+1000000000)));
                  		}
                  	}
                  }
                  
                  	//求一个数字字符串的数位之和
                  	public static int getSum(String s) {
                  		int sum=0;
                  		for(int i=0;i
                  			if(s.charAt(i)='a'&&s.charAt(i)
                  		int count=0;
                  		for(int i=1;i
                  			String a2=Integer.toBinaryString(i);	//转为二进制
                  			String a8=Integer.toOctalString(i);		//转为八进制
                  			String a16=Integer.toHexString(i);		//转为十六进制
                  			if(i%getSum(a2)==0&&i%getSum(a8)==0&&i%getSum(a16)==0&&i%getSum(""+i)==0) {
                  				count++;
                  				if(count==2023) {
                  					System.out.println("第 2023 个幸运数字是:"+i);
                  					break;
                  				}
                  			}	
                  		}
                  	}
                  }
                  
                  	List
                  		used=new boolean[nums.length];
                  		backtrack(nums, 0);
                  		return res;
                  	}
                  	// 回溯法求子集
                  	void backtrack(int[] nums,int start) {
                  		res.add(new LinkedList
                  			//不用剪枝,可以重复
                  //			if(istart&&nums[i]==nums[i-1]&&!used[i-1]))
                  //				continue;
                  			//选择
                  			used[i]=true;
                  			track.add(nums[i]);
                  			//进入下一层回溯
                  			backtrack(nums, i+1);
                  			//撤销选择
                  			track.removeLast();
                  			used[i]=false;
                  		}
                  		
                  	}
                  }
                  public class 试题C_数组分割 {
                  	//返回一个列表的所有数字的和
                  	public static int getSum(List
                  		int sum=0;
                  		for(int e:nums)
                  			sum+=e;
                  		return sum;
                  	}
                  	//统计满足条件的R1个数
                  	public static int count(int[] A) {
                  		SubSet subSet=new SubSet();
                  		List
                  			//将数组A转为List
                  			List
                  		//输入
                  		Scanner sc=new Scanner(System.in);
                  		int T=sc.nextInt();		//有T组数据
                  		int[] res=new int[T];	//记录每组数据的结果
                  		for(int i=0;i
                  			int N=sc.nextInt();
                  			int[] A=new int[N];	//存放每组数据
                  			for(int j=0;j
                  				A[j]=sc.nextInt();
                  			}
                  			res[i]=count(A);
                  		}
                  		for(int i=0;i
                  			System.out.println(res[i]);
                  		}
                  	}
                  }
                  
                  	public static void main(String[] args) {
                  		Scanner sc=new Scanner(System.in);
                  		long x1=sc.nextLong();
                  		long y1=sc.nextLong();
                  		long x2=sc.nextLong();
                  		long y2=sc.nextLong();
                  		long x3=sc.nextLong();
                  		long y3=sc.nextLong();
                  		long x4=sc.nextLong();
                  		long y4=sc.nextLong();
                  		long res=0L;
                  		//R1 和 R2 没有重叠区域
                  		if(x2
                  			res=(x2-x1)*(y2-y1)+(x4-x3)*(y4-y3);
                  			System.out.println(res);
                  		}
                  		//R2完全在R1内部
                  		else if(x1
                  			res=(x2-x1)*(y2-y1);
                  			System.out.println(res);
                  		}
                  		//R1完全在R2内部
                  		else if(x3
                  			res=(x4-x3)*(y4-y3);
                  			System.out.println(res);
                  		}
                  		//R1和R2有部分重叠
                  		else {
                  			long[] x= {x1,x2,x3,x4};
                  			long[] y= {y1,y2,y3,y4};
                  			Arrays.sort(x);
                  			Arrays.sort(y);
                  			//减去重复部分的面积
                  			res=(x2-x1)*(y2-y1)+(x4-x3)*(y4-y3)-(x[2]-x[1])*(y[2]-y[1]);
                  			System.out.println(res);
                  		}
                  	}
                  }
                  
                  	// 将(x,y)所在的土地变成岩石,并返回该土地面积
                  	public static int dfs(int[][] grid,int x,int y) {
                  		int m=grid.length,n=grid[0].length;
                  		// 超出区域边界
                  		if(x
                  		int m=grid.length,n=grid[0].length;
                  		int res=0;
                  		for(int i=0;i
                  			// 将区域上边缘的土壤变成岩石,并记录土地的最大面积
                  			res=Math.max(res, dfs(grid, 0, i));
                  			// 将区域下边缘的土壤变成岩石,并记录土地的最大面积
                  			res=Math.max(res,dfs(grid, m-1, i));
                  		}
                  		for(int j=0;j
                  			// 将区域左边缘的土壤变成岩石,并记录土地的最大面积
                  			res=Math.max(res, dfs(grid, j, 0));
                  			// 将区域右边缘的土壤变成岩石,并记录土地的最大面积
                  			res=Math.max(res, dfs(grid, j, n-1));
                  		}
                  		return res;
                  	}
                  	public static void main(String[] args) {
                  		Scanner sc=new Scanner(System.in);
                  		int N=sc.nextInt();	//区域大小
                  		int[][] grid1=new int[N][N];
                  		int[][] grid2=new int[N][N];
                  		// 输入区域1
                  		for(int i=0;i
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]