加法变乘法(蓝桥杯)

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

现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015
比如:
1+2+3+…+10*11+12+…+27*28+29+…+49 = 2015

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

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

先算出2015和1225的差值,每次改变符号的时候减去这两个数的和,加上这两个数的乘积判断输出就好了。

#include<stdio.h>
int main()
{
	int a[50];
	int i,j,k,sum;
	for(i=1;i<50;i++)
		a[i]=i;
	sum=1225;
	for(i=1;i<50;i++)
	{
		for(j=49;j>=0;j--)
		{
			sum=sum-a[i]-a[i+1];
			sum=sum+(a[i]*a[i+1]);
			sum=sum-a[j]-a[j+1];
			sum=sum+(a[j]*a[j+1]);
			if(sum==2015)
			{
				printf("%d\n",i);
			}
			else
				sum=1225;
			if(j<25)
				break; 
		}
	}
 } 

答案是16.

猜你喜欢

转载自blog.csdn.net/wan_ide/article/details/88723610