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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/J_1234567890/article/details/51838296

加法变乘法
我们都知道: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;  
}

猜你喜欢

转载自blog.csdn.net/J_1234567890/article/details/51838296