zoukankan      html  css  js  c++  java
  • uva12169 Disgruntled Judge

    扩展欧几里得。

    枚举a,根据x1,x3和递推式可得。

    (a+1)*b-k*mod=f[3]-a*a*b.

    通过扩展欧几里得求出b.

    带入原式进行计算。

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    const int maxn = 20000 + 10;
    const int mod = 10001;
    
    typedef long long LL;
    
    LL f[maxn];
    LL n,a,b;
    bool ok;
    
    LL exgcd(LL a,LL b,LL &x,LL &y) {
        if(b==0) {
            x=1; y=0;
            return a;
        }
        LL d=exgcd(b,a%b,y,x);
        y-=(a/b)*x;
        return d;
    }
    
    int main() {
        scanf("%lld",&n);
        for(int i=1;i<=n*2;i+=2) scanf("%d",&f[i]);
        for(a=0;a<=10000;a++) {
            ok=1;
            LL t=f[3]-a*a*f[1],x,y;
            LL d = exgcd(mod,a+1,x,b);
            if(t%d) continue;
            b=b*(t/d);
            for(int i=2;i<=2*n;i++) {
                if(i&1) {
                    if(((a*f[i-1]+b)%mod)!=f[i] )  {
                        ok=0;
                        break;    
                    }
                }
                else f[i]=(a*f[i-1]+b)%mod;
            }
            if(ok) break;
        }    
        for(int i=2;i<=2*n;i+=2) printf("%lld
    ",f[i]);
        return 0;
    }
  • 相关阅读:
    python基础7
    python基础7
    十大经典预测算法(一)----线性回归
    RNN-循环神经网络
    CNN之经典卷积网络框架原理
    卷积神经网络CNN
    决策树的生成
    欠拟合、过拟合及解决方法
    决策树
    KD树
  • 原文地址:https://www.cnblogs.com/invoid/p/5573276.html
Copyright © 2011-2022 走看看