问题描述:
若a和b为正整数,且a+ab+b=m,求a+b。
输入:
若干个正整数m。
输出:
a+b的值。如果有多个a+b满足原方程式则多行输出,每一行输出一个a+b。
对于每个m,输出a+b之后输出一个空行隔开结果。
样例输入:
25
23
样例输出
13
12
9
8
问题分析:
本题用枚举法来实现。
因为求a+b=b+a,所以只需要枚举a≤b的情况。
解题C语言程序如下:
/* M0003 枚举解整数方程 */
#include <stdio.h>
int main()
{
int m;
while(~scanf("%d", &m)) {
for (int a = 1; a < m; a++)
for (int b = a; b < m; b++)
if (a + a * b + b == m)
printf("%d\n", a + b);
printf("\n");
}
return 0;
}