1如有错误请指出, 万分感谢!
#include<stdio.h>
#include<cmath>
#include<algorithm>
typedef long long lnt;
const int mod = 1e9 + 7;
const int maxn = 1e6 + 5;
bool mark[maxn];
lnt fac[maxn];
//gcd
lnt gcd(lnt a, lnt b)
{
return (!b) ? a : gcd(b, a % b);
}
//扩展欧几里得
//注意x1和y1容易产生参数冲突
lnt exgcd(lnt a, lnt b, lnt &x, lnt &y)
{
if(!b)
{
x = 1, y = 0;
return a;
}
lnt xx, yy, d;
d = exgcd(b, a % b, xx, yy);
x = yy;
y = xx - a / b * yy;
return d;
}
//快速幂
inline lnt mpow(lnt a, int b)
{
lnt ans = 1;
while(b)
{
if(b & 1) ans = ans * a % mod;
a = a * a % mod, b >>= 1;
}
return ans;
}
//矩阵
struct Matrix
{
int m, l;
int v[1005][1005];
friend Matrix operator * (Matrix a, Matrix b)
{
Matrix c;
c.m = a.m, c.l = b.l;
for (int i = 1; i <= c.m; ++ i)
for (int j = 1; j <= c.l; ++ j)
{
c.v[i][j] = 0;
for (int k = 1; k <= a.l; ++ k)
c.v[i][j] = (c.v[i][j] + a.v[i][k] * b.v[k][j]) % mod;
}
return c;
}
};
//组合数
inline int C(lnt n, lnt m)
{
if(n < m) return 0;
return fac[n] * mpow(fac[m] * fac[n - m] % mod, mod - 2) % mod;
}
//Lucas
lnt lucas(lnt n, lnt m)
{
if(n < m) return 0;
if(!m || n == m) return 1;
return C(n % mod, m % mod) * lucas(n / mod, m / mod) % mod;
}
//线性筛
int n, tot, pr[maxn];
inline void Linear_Sieve()
{
for (int i = 2; i < n; ++ i)
{
if(!mark[i]) pr[++ tot] = i;
for (int j = 1; j <= tot && i * pr[j] < n; ++j)
{
mark[i * pr[j]] = true;
if((i % pr[j]) == 0) break;
}
}
}
//高斯消元
inline void Gauss()
{
int cnt = 0;
for (int i = 1; i <= n; ++ i)
{
int j = -1;
for (int k = cnt + 1; j <= m; ++ j)
if(fabs(a[k][i]) > fabs(a[j][i])) j = k;
if(j == -1) continue;
for (int k = 1; k <= n + 1; ++ k)
swap(a[cnt + 1][k], a[j][k]);
for (int j = 1; j <= m; ++ j)
{
if(j == cnt + 1 || fabs(a[j][i] < eps)) continue;
double r = a[j][i] / a[cnt + 1][i];
for (int k = i; k <= n + 1; ++ k)
a[j][k] -= a[cnt + 1][k] * r;
}
cnt ++;
}
for (int i = cnt + 1; i <= m; ++ i)
if(fabs(a[i][n + 1]) > eps)
{
puts("No Solution");
return;
}
if(cnt < n)
{
puts("Multiply Solutions");
return;
}
for (int i = 1; i <= n; ++ i)
printf("%.2f\n", a[i][n + 1] / a[i][i]);
puts("");
}
int main() {}