Description
已知:1+2+3+ … + 100 = 5050,请找出两个不相邻(至少被两个数字间隔开)的加号变成乘号,使计算结果变为8260。比如,把5和57两个位置的加号变成乘号,即可满足:1+2+3+…+5*6+7+…+57*58+59+…+100 = 8260(注意:乘法优先级高于加法)。请聪明的你找出所有可能的位置。
Input
无
Output
输出为多行(换行间隔)
每行两个整数(空格间隔),两个整数表示乘号的两个位置(对于示例,就是5 57)
按第一个位置的值从小到大顺序输出结果
Sample Input
Sample Output
X1 Y1
X2 Y2
...
解题思路:分别取俩次俩个相邻数字然后相乘,那么求和就是5050减去不加起来的了,加上加起来的。求这俩个相邻数字可以用穷举法,用俩个for循环。
代码如下:
1753
#include<stdio.h>
int main()
{
int i,a, b, n, sum = 5050;
for (i = 1; i <= 100; i++)
{
n = i * (i + 1);
for (a = i + 2; a < 100; a++)
{
sum = 5050;
sum = sum -i-i-1-a-a-1+ n + a * (a + 1);
if (sum == 8260)
printf("%d %d\n", i, a);
}
}
}