您的位置:首页 > 其它

蓝桥杯填空题 —— 加法变乘法

2016-07-06 13:55 239 查看
加法变乘法

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

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

比如: 1+2+3+…+10*11+12+…+27*28+29+…+49 = 2015 就是符合要求的答案。

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

思路

1+2+3+…+49 = (1+49)*49/2 = 1225

假设在num = i 和 num = j 时是进行乘法运算的,则有1+2+3+…+i * (i + 1)+…+j * (j + 1)+… +49 = 2015

将上式进行拆分:1+2+3+…+i + (i + 1)+…+j + (j + 1)+… +49 = 1225,本来应该加上i * (i + 1),现在只加了 i + (i + 1),还剩下

i * (i + 1) - i + (i + 1) = i * (i + 1) - (2*i + 1) 没有加上去,同理,还有剩下没加的是 j * (j + 1) - (2*j + 1)

因此,1+2+3+…+i + (i + 1)+…+j + (j + 1)+… +49 + i * (i + 1) - (2*i + 1) + j * (j + 1) - (2*j + 1) = 2015

即 1225 + i * (i + 1) - (2*i + 1) + j * (j + 1) - (2*j + 1) = 2015

int main()
{
//1+...+49=(50/2)*49=1225
int i,j;
for(i=1;i<=48;i++)
{
for(j=i+1;j<=48;j++)
{
if(1225-(2*i+1)-(2*j+1)+i*(i+1)+j*(j+1)==2015)
printf("%d  %d\n",i,j);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  蓝桥杯 填空题 c