第十届蓝桥杯大赛软件类省赛 Java 大学 B试题 D: 数的分解解答

该博客介绍了一个使用Java解决整数分解的问题,代码旨在找出不含特定数字(如2或4)的三元组(i, j, k),使得i+j+k等于给定的整数,并确保三元组互不相等。主要方法是通过两层循环遍历可能的i和j值,然后计算k。博客还探讨了如何在字符串和整数之间进行转换以检查数字的存在性。
摘要由CSDN通过智能技术生成
答案:40785
代码如下:

方法1:求出三重重复的i,j,k,最后总数除以3

public class D_DecompositionofNum{
	/********************************************************************************************************************************************************
	 * Q:如何查看一个整数里面是否含有某个数字?
	 * 新面孔:(i+"").indexOf("a")   (i+""):	将整数i转为字符串i[妙],很适合用于求某个大的整数里面是否含有某一个数字之类的题										
	 * 								 java中字符串可以直接和整型数相加,结果自动转化为字符串(另:单个字符也可以和整数相加,结果转换为整数输出,相关请查看下面的链接
	 * 							  	 b.indexOf("a"):	 查看字符串b里面是否含有子串a,求子串a的下标,若求得-1则代表b里面不含a																		
	 ********************************************************************************************************************************************************
	 */
	public static void main(String[] args) {
		int num = 2019;	//被分解的数
		int count = 0;	//记录分解的种类
		for (int i = 1; i < num; i++) {
			if ((i + "").indexOf("2") != -1 || (i + "").indexOf("4") != -1)	//(k + ""),整型数k加一个空字符串的作用应该是把k转换成字符串,好利用字符串自带的indexOf("m")方法来判断字符串里面是否含有字串m
				continue;	//为啥不是break?上面的if里值不等于-1就代表i里面的某个下标里含有2或4
			for (int j = i + 1; j < num; j++) {	//j从i+1开始就减少了一半的排列方式
				if ((j + "").indexOf("2") != -1 || (j + "").indexOf("4") != -1) //如果整数j里面不含有2或4,举个例子:j=102,if里为真 
					continue;	//就跳出当前j=102这个循环,不再向下计算k了,返回到for里面执行j++(即j=103)后继续往下执行判断if...
				int k = num - i - j;
				if (i == k || j == k || i == j) //如果三个整数相等(题目要求三个整数不等),不往下执行if判断了,返回当前循环执行j++
					continue;
				if (k > 0 && (k + "").indexOf("2") == -1 && (k + "").indexOf("4") == -1) {	//如果上面的条件都不满足,就代表i,j都不含2或4,且i,j,k不相等,在判断k里不含2或4,即为所求正解
					count++;
				}
			}
		}
		System.out.println(count / 3);	//去重,以上所求为三种情况之和,i<j<k,i<k<j,k<i<j
	}
}

java中字符串,整数,字符之间的相加转换
方法2:
待补充…

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值