ABC F 求助
  • 板块学术版
  • 楼主LargeRice16pro
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/1/21 22:18
  • 上次更新2023/10/24 03:23:33
查看原帖
ABC F 求助
225100
LargeRice16pro楼主2023/1/21 22:18
#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/21 22:18
加载中...