zoukankan      html  css  js  c++  java
  • 数论(待改)

    
    

    a+tm=b+tn(mod l)

    a-b=t(n-m)(mod l)
    a+tm=b+tn+kl
    (a-b)=t(m-n)+kl

    ax+by=gcd(a,b)

    ax1+by1=gcd(a,b)
    (b)x2+(a-a/b*b)y2=gcd(b,a%b)
    (b)x2+(a)y2-(a/b*b)y2=gcd(b,a%b)
    (b)x2+(a)y2-floor(a/b)*b*y2=gcd(b,a%b)
    (b)(x2-floor(a/b)*y2)+(a)y2
    所以
    x1=y2

    y1=(x2-floor(a/b)*y2)

     手推

    k*i+r=p
    k*i+r=0(mod p)
    k*i^-1*r^-1=-r*i^-1*r^-1(mod p)

    k*r^-1=-i^-1(mod p)
    i^-1=-k*r^-1(mod p)
    k=floor(p/i);r=p-floor(p/i)*i
    即i的乘法逆元为
    -floor(p/i)*(p%i)^-1(mod p)
    inv[i]=-floor(p/i)*inv[p%i](mod p)=]=-floor(p/i)*inv[p%i]%p

    #include<bits/stdc++.h>using namespace std;bool haveearo=false;int n;const double x=0.000001;bool vis[200];double a[200][20000];double d[200];int main(){scanf("%d",&n);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){scanf("%lf",&a[i][j]);}scanf("%lf",&d[i]);}for(int k=1;k<=n;k++){int to;for(int i=1,maxn=-0x7fffffff;i<=n;i++)//找最大 {if(fabs(a[i][k])>maxn&&vis[i]==false){maxn=fabs(a[i][k]);to=i;}}if(0-x<=a[to][k]&&a[to][k]<=0+x){haveearo=true;continue;}double chu=a[to][k];swap(d[1],d[to]);swap(vis[1],vis[to]);vis[1]=true;d[1]/=chu;for(int i=1;i<=n;i++){swap(a[1][i],a[to][i]);a[1][i]/=chu;}for(int i=2;i<=n;i++){chu=a[i][k]/a[1][k];double t;for(int j=k;j<=n;j++){t=a[1][j]*chu;a[i][j]=a[i][j]-t;}double dt=d[1]*chu;d[i]=d[i]-dt;}}//判断无穷解 bool ok=false;if(haveearo==true){for(int i=1;i<=n;i++){ok=false;if(d[i]!=0){ok=true;}for(int j=1;j<=n;j++){if(a[i][j]!=0){ok=true;break;}}if(ok==false){printf("0\n");return 0;}}printf("-1\n");return 0;}for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){if(1-x<=a[i][k]&&a[i][k]<=1+x){printf("x%d=%.2lf\n",k,d[i]);break;}}}return 0;}

  • 相关阅读:
    时间工厂[XDU1013]
    奇妙的旅行[XDU1012]
    金子上的友情[XDU1011]
    素数环问题[XDU1010]
    转盘游戏[XDU1006]
    跳舞毯[XDU1005]
    Tri Tiling[HDU1143]
    A Walk Through the Forest[HDU1142]
    核反应堆[HDU2085]
    How Many Trees?[HDU1130]
  • 原文地址:https://www.cnblogs.com/HKHbest/p/13499149.html
Copyright © 2011-2022 走看看