因式分解題目,用遞歸來解決。
代碼如下:
// 因式分解相關
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
bool aTrue, bTrue;
void dfs(int m, int n, int p) { // m >= n
if(aTrue) return; // forget
if(m == 1 && n == 1) {
aTrue = true;
return; // forget
}
if(n == 1)
bTrue = true;
while(p > 1) {
if(m % p == 0) dfs(m / p, n, p - 1); // m / p , not m % p
if(n % p == 0) dfs(m, n / p, p - 1);
p--;
}
}
int main() {
int a, b;
while(scanf("%d%d", &a, &b) != EOF) {
aTrue = bTrue = false;
if(a < b) {
int temp = a;
a = b;
b = temp;
}
dfs(a, b, 100);
if(!aTrue && bTrue)
printf("%d\n", b);
else // wrong as : if(aTrue)
printf("%d\n", a);
}
return 0;
}