题意:
我们都知道:1+2+3+ … + 49 = 1225
现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015
比如:
1+2+3+…+10*11+12+…+27*28+29+…+49 = 2015
就是符合要求的答案。
请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。
注意:需要你提交的是一个整数,不要填写任何多余的内容。
解题思路:
两个不相邻的加号
限制条件:(j-i)!=2
第一部分:1+2+3+...+i(9)
第二部分:(i+1)*(i+2)
第三部分:i+3+...+j(26)
第四部分:(j+1)*(j+2)
第五部分:j+3+...+49
判断之和是否等于2015
代码:
package com.tjrac_java_2;
import java.util.Set;
import java.util.TreeSet;
import java.util.Vector;
public class TT {
public static void main(String[] args) {
int ans=0;
for(int i=1;i<=49;i++){//极限 47*48
for (int j = i; j<=49 ; j++) {
if((j-i)!=2){//不相邻
if(check(i,j)==2015){
System.out.println("i:"+(i+1)+" j:"+(j+1));
}
}
}
}
System.out.println(check(9,26));//测试
}
private static int check(int i, int j) {
int s = 0;
s=sum(1,i)+(i+1)*(i+2)+sum(i+3,j)+(j+1)*(j+2)+sum(j+3,49);
return s;
}
private static int sum(int l,int r) {
return (l+r)*(r-l+1)/2;
}
}