蓝桥杯-C题解之加法变乘法

加法变乘法

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

就是符合要求的答案。
请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。
注意:需要你提交的是一个整数,不要填写任何多余的内容。

  **思路分析:
  进过研究我们可以发现规律
  1-49中任意两组两个数相乘(A*B+C*D)的结果相加 
  再减去  两组两个数相加(A+B+C+D)的结果 = 790

  规律如何得来呢?分析示例如下、
  1+2+3+ ... + 49 = 1225
  1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015
  2015 - 1225 = 790 = (10*11+27*28)-(10+11+27+28)
  所以题目变的简单起来,请看下面代码**  
#include <stdio.h>

#define SIZE 50

int a[SIZE];

int main()
{
    int i;
    int j;
    //给数组赋初值
    for (i = 1; i < 50; i++)
    {
        a[i] = i;
    }
    //枚举所有情况
    for (i = 1; i < 47; i++)
    {
        //因为i、j不能相邻,所以每次从j = i+2开始枚举
        for (j = i + 2; j < 49; j++)
        {
            if ((a[i]*a[i+1] + a[j]*a[j+1])-(a[i]+a[i+1]+a[j]+a[j+1]) == 790)
            {
                printf("a[%d]*a[%d] + a[%d][%d] = 790\n", i, i+1, j, j+1);
            }
        }
    }
    return 0;
}

程序运行结果
蓝桥杯-C题解之加法变乘法_第1张图片
这是一道程序填空题、按要求只需要填写16即可!

你可能感兴趣的:(蓝桥杯C题加法变乘法)