zoukankan      html  css  js  c++  java
  • hdu1573 X问题

    hdu1573 X问题

    excrt

    跑一遍excrt,蓝后算算个数

    用%lld就出锅(大雾)

    #include<cstdio>
    #include<iostream>
    using namespace std;
    typedef long long ll;
    ll mod(ll x,ll p) {return x<0 ?x+p:x;}
    ll mul(ll x,ll y,ll p){
        ll tmp=x*y-(ll)((long double)x/p*y+1.0e-8)*p;
        return mod(tmp,p);
    }ll g,a[20],b[20],M;
    void exgcd(ll a0,ll b0,ll &x,ll &y){
        if(!b0) x=1,y=0,g=a0;
        else exgcd(b0,a0%b0,y,x),y-=x*(a0/b0);
    }int n;
    ll excrt(){
        ll res=a[1],x,y,c,t,B;M=b[1];
        for(int i=2;i<=n;++i){
            B=b[i];
            c=mod((a[i]-res)%B,B);
            exgcd(M,B,x,y); t=B/g;
            if(c%g) return -1;
            x=mul(x,c/g,t=B/g);
            res+=x*M; M*=t;
            res=mod(res%M,M); 
        }return res;
    }
    int main(){
        int t,q;scanf("%d",&t);
        while(t--){
            scanf("%d%d",&q,&n);
            for(register int i=1;i<=n;++i)
                cin>>b[i];
            for(register int i=1;i<=n;++i)
                cin>>a[i];
            ll ans=excrt();
            if(ans==-1||ans>q) printf("0
    "); //无解
            else{
                int qaq=(!ans); //ans=0时要-1
                ans=(q-ans)/M+1-qaq; //个数统计
                printf("%I64d
    ",ans);
            }
        }return 0;
    }
  • 相关阅读:
    Spring Boot
    AWS DynamoDB
    VBA读excel写xml
    WebSocket API 学习
    故障排除 Mybatis ORA-01000 和 本地缓存问题
    Java基础
    Java Tutorials Lambda表达式 翻译
    在代理环境中构建maven环境
    Pom
    我的JAVA笔记
  • 原文地址:https://www.cnblogs.com/kafuuchino/p/9779345.html
Copyright © 2011-2022 走看看