ACM UVA-11565

解方程式

int main(int argc, char const* argv[])
{
    int n;
    while (~scanf("%d",&n)) {
        int A,B,C;
        while (n--) {
            scanf("%d %d %d",&A,&B,&C);
            bool b;
            for(int x = -B;x < B;x++){
                int yz;
                if(x != 0 && B%x == 0){
                    yz = B/abs(x);
                    b = false;
                    for(int y = x+1;y < yz;y++){
                        int z1,z2,z3;
                        if(y != 0 && yz%y == 0){
                            //printf("x = %d,y = %d\n",x,y);
                            z1 = A-x-y;
                            z2 = (B/x)/y;
                            z3 = C-x*x-y*y;
                            if(z1 == z2 && z2*z2 == z3){
                                printf("%d %d %d\n",x,y,z1);
                                b = true;
                                break;
                            }
                        }
                    }
                }
                if(b)
                    break;

            }
            if(!b)
                printf("No solution.\n");

        }
    }

    return 0;
}