题目描述:
已知
ABCAB
* A
------------
DDDDDD
求满足的式子
本题最最最暴力的解法是利用五个for循环,循环枚举ABCDE这五个数,这里我就不做过多的赘述了,我这里要讲的是优化版本的
首先我们可以枚举一下A,再枚举一下D,我们定义一个数为res,它的值为DDDDDD,再定义一个total,他的值是ABCAB,因为res是total*A得来的,所以res%A必定为0,也就是res%A==0.
然后我们只需要检查一下res的第一个数和第四个数是否相等以及第二个数和第五个数是否相等,如果这两个条件都满足的话,那么这就是一个满足的式子。
整个代码如下
#include <iostream>
int main()
{
int A, D;
int total;//DDDDDD
int res;//ABCAB
for (A = 3;A <= 9;A++)
{
for (D = 1;D <= 9;D++)
{
total = 100000 * D + 10000 * D + 1000 * D + 100 * D + 10 * D + D;
if (total % A == 0)
{
res = total / A;
if (res / 10000 == res % 100 / 10)
{
if (res % 10 == res / 1000 % 10)
{
printf("%d*%d=%d\n", res, A, total);
}
}
}
}
}
return 0;
}