• 【入门OJ4815】Xiao 9*大战朱最学


    题面

    自从朱最学~搞定了QQ农场以后,就开始捉摸去QQ牧场干些事业,不仅自己牧场养牛,还到Xiao 9*农场放牛- -!Xiao 9*很生气,有一次朱最学想知道Xiao 9*牧场奶牛的数量,于是Xiao 9*想狠狠耍朱最学一把。举个例子,假如有16头奶牛,如果建了3个牛棚,剩下1头牛就没有地方安家了。如果建造了5个牛棚,但是仍然有1头牛没有地方去,然后如果建造了7个牛棚,还有2头没有地方去。你作为Xiao 9*的私人秘书理所当然要将准确的奶牛数报给Xiao 9*,你该怎么办?

    分析

    中国剩余定理模板

    代码

    #include<bits/stdc++.h>
    using namespace std;
    #define N 20
    #define ll long long
    ll n,x,y,ans;
    ll a[N],m[N];
    
    inline ll exgcd(ll a,ll b,ll &x,ll &y)
    {
        if(b==0)
        {
            x=1,y=0;
            return a;
        }
        ll ret=exgcd(b,a%b,x,y);
        ll t=x;x=y,y=t-(a/b)*y;
        return ret;
    }
    
    inline ll CRT(ll a[],ll m[],ll n)
    {
        ll ans=0,M=1;
        for(ll i=1;i<=n;i++)M*=m[i];
        for(ll i=1;i<=n;i++)
        {
            ll Mi=M/m[i];
            exgcd(Mi,m[i],x,y);
            ans=(ans+x*a[i]*Mi)%M;
        }
        if(ans<0)ans+=M;
        return ans;
    } 
    
    int main()
    {
        scanf("%lld",&n);
        for(ll i=1;i<=n;i++)scanf("%lld%lld",&m[i],&a[i]);
        ans=CRT(a,m,n);
        printf("%lld
    ",ans);
        return 0;
    }
  • 相关阅读:
    【t090】吉祥数
    【u221】分数
    【u212】&&【t036】最大和
    【u125】最大子树和
    【u124】环状最大两段子段和
    【u123】最大子段和
    【u122】迎接仪式
    【u121】教主的花园
    【u118】日志分析
    【u117】队列安排
  • 原文地址:https://www.cnblogs.com/NSD-email0820/p/9911430.html
Copyright © 2020-2023  润新知