1. 程式人生 > >藍橋杯 加法變乘法的java實現

藍橋杯 加法變乘法的java實現

加法變乘法

我們都知道:1+2+3+ … + 49 = 1225
現在要求你把其中兩個不相鄰的加號變成乘號,使得結果為2015
比如:
1+2+3+…+10*11+12+…+27*28+29+…+49 = 2015

就是符合要求的答案。
請你尋找另外一個可能的答案,並把位置靠前的那個乘號左邊的數字提交(對於示例,就是提交10)。
注意:需要你提交的是一個整數,不要填寫任何多餘的內容。

分析:這個題目乍看上去有點無從下手的感覺。我們可以假設靠前乘號的左邊數字為a, 則右邊的數字為a+1,靠後乘號的左邊的數字為b,則乘號右邊的數字為b+1。

所以算式可改寫為:

1+2+3+...+a+(a+1)+(a+2)+...+b+(b+1)+...+49=1225   (1)

1+2+3+...+a*(a+1)+(a+2)+...+b*(b+1)+...+49=2015     (2)

(2)-(1)=a*(a+1)+b*(b+1)-a-(a+1)-b-(b+1)=2015-1225=790

所以原問題變成了在 1-49之間找兩對相鄰的數字,且它們的乘積之和減去四個數字之和的差為790(樓主語言表達能力有限)。

下面直接上程式碼:

public class 加法變乘法 {
	
public static void main(String[] args) {
	int a,b,c,d;
	for(int i=1;i<=49;i++) {
		a=i;
		b=i+1;
		for(int j=i+2;j<=49;j++) {
			c=j;
			d=j+1;
			if(a*b+c*d-(a+b)-(c+d)==790&&a!=10) {
				System.out.println(a);
				break;
			}
		}
	}
}
}