【每日蓝桥】29、一五年省赛Java组真题“加法变乘法”

你好呀,我是灰小猿,一个超会写bug的程序猿!

欢迎大家关注我的专栏“每日蓝桥”,该专栏的主要作用是和大家分享近几年蓝桥杯省赛及决赛等真题,解析其中存在的算法思想、数据结构等内容,帮助大家学习到更多的知识和技术!

标题:加法变乘法

我们都知道 1+2+3+...+49=1225

现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015

比如:1+2+3+...+9+10*11+12+...+27*28+29+...+49=2015

就是符合要求的答案

请你寻找另一个可能的答案,并把位置靠前的那个乘号前边的数字提交,(对于示例,要求提交10)

注意:需要你提交的是一个整数,不要填写任何多余的内容

解题思路:

对于这道题,我们可以先枚举出第一个和第二个加号所在在位置,之后在其基础上对式子进行判断,如果仔细研究式子其实就可以发现:

答案源码:

public class Year2015_Bt6 {

	public static void main(String[] args) {
		
		for (int i = 1; i <= 46; i++) {
			for (int j = i+2; j <= 48; j++) {
				//因为当加号变成乘号之后,除了i、i+1和j、j+1位变化,其他位均未变化,
				//所以只需要验证i*(i+1)-(i+i+1)+j*(j+1)-(j+j+1)的差值是否等于2015-1225即可
				if (i*(i+1)-(i+i+1)+j*(j+1)-(j+j+1)==2015-1225) {
					System.out.println(i + " " + j);			
				}
			}
			
		}
	}

}

输出样例:

其中有不足或者改进的地方,还希望小伙伴留言提出,一起学习!

感兴趣的小伙伴可以关注专栏!

灰小猿陪你一起进步!

猜你喜欢

转载自blog.csdn.net/weixin_44985880/article/details/114747907