对称与反对称
根据线代书上的说法,一定存在。
如果a[1][2]=A,a[2][1]=B,那么我们应该求的是(A-B)/2和(A+B)/2,为了使它们为整数,那么应该求2的逆元,根据逆元线性筛,2对m的逆元为=(mod-mod/2)%mod.
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<iostream>
#include<math.h>
#include<queue>
#include<map>
#include<vector>
using namespace std;
#define inf 0x3f3f3f3f
#define ll long long
ll n,mod;
ll a[1100][1100];
int main()
{
while(~scanf("%lld%lld",&n,&mod))
{
ll m=(mod-mod/2)%mod;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%lld",&a[i][j]);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(j!=1) printf(" ");
printf("%lld",((a[i][j]-a[j][i])*m%mod+mod)%mod);
}
printf("\n");
}
}
}