Pagini recente » Cod sursa (job #1715486) | Cod sursa (job #1748474) | Cod sursa (job #388449) | Cod sursa (job #1630953) | Cod sursa (job #631962)
Cod sursa(job #631962)
#include<fstream>
#include<cmath>
using namespace std;
ifstream f("ecuatie.in");
ofstream g("ecuatie.out");
long long A, B, C, K;
bool verf(long long k, long long p1, long long p2, long long q1, long long q2)
{ if(k < K) return 0;
//g<<k<<": ";
g<<"(";
if(p1 == 1 || p1 == -1) (p1 == 1) ? g<<"x" : g<<"-x";
else g<<p1<<"x";
(q1 < 0) ? g<<q1 : g<<"+"<<q1;
g<<")";
g<<"(";
if(p2 == 1 || p2 == -1) (p2 == 1) ? g<<"x" : g<<"-x";
else g<<p2<<"x";
(q2 < 0) ? g<<q2 : g<<"+"<<q2;
g<<")"; g<<'\n';
return 1;
}
int main()
{ long long k, p1, p2, q1, q2;
long long delta, sqrdel;
f>>A>>B>>C>>K;
delta = B * B - 4 * A * C;
sqrdel = sqrt((double)delta);
if(delta < 0 || sqrdel * sqrdel != delta) { g<<-1; return 0; }
for(p1 = min(-A, A), k = 0; p1 <= max(A, -A); p1++)
{ if(p1 == 0 || A % p1) continue;
p2 = A / p1;
if(delta == 0)
{ q1 = B / (2 * p2);
q2 = C / q1; if(q2 * q1 != C) continue;
k++;
if(verf(k, p1, p2, q1, q2)) return 0;
}
else
{ q1 = min((B - sqrdel) / (2 * p2), (B + sqrdel) / (2 * p2)) ;
if(q1) q2 =C / q1;
if(q2 * q1 == C && p1 * q2 + p2 * q1 == B)
{ k++;
if(verf(k, p1, p2, q1, q2)) return 0;
}
q1 = max((B - sqrdel) / (2 * p2), (B + sqrdel) / (2 * p2)) ;
if(q1) q2 =C / q1;
if(q2 * q1 == C && p1 * q2 + p2 * q1 == B)
{ k++;
if(verf(k, p1, p2, q1, q2)) return 0;
}
}
}
g<<-1;
f.close();
g.close();
return 0;
}