奇怪的卡取模
查看原帖
奇怪的卡取模
167251
Ranye楼主2021/11/16 00:31
for(int i=1;i<=n;i++)
{
    for(int j=i+1;j<=n;j++)
    {
        while(a[i][i])
        {
            int t=a[j][i]/a[i][i];
            for(int k=i;k<=n;k++) a[j][k]=(1LL*a[j][k]-1LL*t*a[i][k]%p+p)%p;
            for(int k=i;k<=n;k++) swap(a[i][k],a[j][k]);
            flag^=1;
        }
        for(int k=i;k<=n;k++) swap(a[i][k],a[j][k]);
        flag^=1;
    }
}

for(int i=1;i<=n;i++)
{
    for(int j=i+1;j<=n;j++)
    {
        while(a[i][i])
        {
            int t=a[j][i]/a[i][i];
            for(int k=i;k<=n;k++) a[j][k]=((1LL*a[j][k]-1LL*t*a[i][k]%p)%p+p)%p;
            for(int k=i;k<=n;k++) swap(a[i][k],a[j][k]);
            flag^=1;
        }
        for(int k=i;k<=n;k++) swap(a[i][k],a[j][k]);
        flag^=1;
    }
}

前者AC,后者TLE,差别只是辗转相除法时作差多取了个模

for(int k=i;k<=n;k++) a[j][k]=(1LL*a[j][k]-1LL*t*a[i][k]%p+p)%p;
for(int k=i;k<=n;k++) a[j][k]=((1LL*a[j][k]-1LL*t*a[i][k]%p)%p+p)%p;
2021/11/16 00:31
加载中...