ABC F 求助,想知道为什么没过样例/
  • 板块学术版
  • 楼主LargeRice16pro
  • 当前回复13
  • 已保存回复13
  • 发布时间2023/1/22 00:09
  • 上次更新2023/10/24 03:22:10
查看原帖
ABC F 求助,想知道为什么没过样例/
225100
LargeRice16pro楼主2023/1/22 00:09
#include<bits/stdc++.h>
#define int long long
#define db double
#define inf 2e18
#define mp make_pair
#define fi first
#define se second
#define pr printf
#define ps puts
#define pb push_back
#define For(i,a,b) for(i=a;i<=b;i++)
#define FOR(i,a,b) for(i=a;i>=b;i--)
using namespace std;
const int N=2e5+10;
int n,m,b[N];
int a[9]={4,5,7,9,11,13,17,19,23};
int A[N],M[N];
void exgcd(int a,int b,int &x,int &y){
    int t;
    if(b==0){
        x=1;
        y=0;
    }
    else{
        exgcd(b,a%b,x,y);
        t=x;x=y;y=t-(a/b)*y;
    }
}
int intchina(int r){
    int i,Mi,x0,y0,ans=0,MM;
    MM=1;
    for(i=1;i<=r;i++)
    MM*=M[i];
    for(i=1;i<=r;i++){
        Mi=MM/M[i];
        exgcd(Mi,M[i],x0,y0);
        ans=(ans+Mi*x0*A[i])%MM;
    }
    ans=(ans+MM)%MM;
    if(!ans) ans=MM;
    return ans;
}
signed main(){
    int t,i,j,s=0,cnt=0;
    m=108;
    cout<<m<<endl;
    For(i,0,8){
        s+=a[i];
        cout<<s<<" ";
        For(j,s-a[i]+1,s-1) cout<<j<<" ";
    }
    cout<<endl;
    For(i,1,m) cin>>b[i];
    s=0,t=1;
    For(i,0,8){
        s+=a[i];
        M[++cnt]=a[i]; 
        if(b[t]==s){
            A[cnt]=0;
        }
        else FOR(j,s-1,s-a[i]+1){
            if(b[t]==j){
                A[cnt]=s-j;
            }
        }
        t+=a[i];
    }
    cout<<intchina(cnt)<<endl;
    exit(0);
    return 0;
}

我感觉我本地手动测是能过样例的至少。

2023/1/22 00:09
加载中...