You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.3 KiB
C++
87 lines
2.3 KiB
C++
#define _CRT_SECURE_NO_WARNINGS
|
|
#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING
|
|
#include <bits/stdc++.h>
|
|
using namespace std;
|
|
const int MAXN = 6;
|
|
const double EPS = 1e-8;
|
|
double a[10][10];
|
|
int solve(bool l[], double ans[], const int &n)
|
|
{
|
|
int res = 0, r = 0;
|
|
for (int i = 0; i < n; ++i) l[i] = false;
|
|
for (int i = 0; i < n; ++i)
|
|
{
|
|
for (int j = r; j < n; ++j)
|
|
if (fabs(a[j][i]) > EPS)
|
|
{
|
|
for (int k = i; k <= n; ++k) swap(a[j][k], a[r][k]);
|
|
break;
|
|
}
|
|
if (fabs(a[r][i]) < EPS)
|
|
{
|
|
++res;
|
|
continue;
|
|
}
|
|
for (int j = 0; j < n; ++j)
|
|
if (j != r && fabs(a[j][i]) > EPS)
|
|
{
|
|
double tmp = a[j][i] / a[r][i];
|
|
for (int k = i; k <= n; ++k) a[j][k] -= tmp * a[r][k];
|
|
}
|
|
l[i] = true, ++r;
|
|
}
|
|
for (int i = 0; i < n; ++i)
|
|
if (l[i])
|
|
for (int j = 0; j < n; ++j)
|
|
if (fabs(a[j][i]) > 0) ans[i] = a[j][n] / a[j][i];
|
|
return res;
|
|
}
|
|
int main()
|
|
{
|
|
int T, Q;
|
|
scanf("%d", &T);
|
|
while (T--)
|
|
{
|
|
int x1, y1, x2, y2, x3, y3;
|
|
int x4, y4, x5, y5, x6, y6;
|
|
scanf("%d%d%d%d%d%d", &x1, &y1, &x2, &y2, &x3, &y3);
|
|
scanf("%d%d%d%d%d%d", &x4, &y4, &x5, &y5, &x6, &y6);
|
|
bool l[MAXN];
|
|
double ans[MAXN];
|
|
memset(l, 0, sizeof l);
|
|
memset(ans, 0, sizeof ans);
|
|
memset(a, 0, sizeof a);
|
|
a[0][0] = x1;
|
|
a[0][2] = y1;
|
|
a[0][6] = x4;
|
|
a[1][1] = x1;
|
|
a[1][3] = y1;
|
|
a[1][6] = y4;
|
|
|
|
a[2][0] = x2;
|
|
a[2][2] = y2;
|
|
a[2][6] = x5;
|
|
a[3][1] = x2;
|
|
a[3][3] = y2;
|
|
a[3][6] = y5;
|
|
|
|
a[4][0] = x3;
|
|
a[4][2] = y3;
|
|
a[4][6] = x6;
|
|
a[5][1] = x3;
|
|
a[5][3] = y3;
|
|
a[5][6] = y6;
|
|
solve(l, ans, MAXN);
|
|
for (int i = 0; i < MAXN; i++)
|
|
printf("%c %d %.4lf\n", 'a' + i, l[i], ans[i]);
|
|
scanf("%d", &Q);
|
|
while (Q--)
|
|
{
|
|
int x, y;
|
|
scanf("%d%d", &x, &y);
|
|
printf("%.2lf %.2lf\n", ans[0] * x + ans[2] * y, ans[1] * x + ans[3] * y);
|
|
}
|
|
}
|
|
return 0;
|
|
}
|