1 条题解

  • 0
    @ 2025-2-21 20:03:46

    C++ :

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    
    #define mod 1222
    
    typedef long long ll;
    
    using namespace std;
    
    ll n,m,a,b,c,d;
    ll x,y;
    ll px[5010];
    ll qy[5010];
    ll f[5010];
    
    int quick_pow(int x,int k){
    	int ans=1;
    	
    	while(k>0){
    		if(k&1){
    			ans=ans*x%mod;
    		}
    		x=x*x%mod;
    		k>>=1;
    	}
    	
    	return ans%mod;
    }
    
    int main(){
    	//freopen("ysh.in","r",stdin);
    	//freopen("ysh.out","w",stdout);
    	
    	memset(qy,0,sizeof(qy));
    	memset(px,0,sizeof(px));
    	px[1]=1;qy[1]=1;
    	
    	scanf("%d",&n);
    	for(int i=1;i<=n;++i){
    		scanf("%lld%lld",&x,&y);
    		int tot=0;
    		
    		for(int j=0;j<=y;++j){
    			tot+=quick_pow(x,j)%mod;
    		}
    		px[1]*=tot;
    		px[1]%=mod;
    	}
    	
    	scanf("%d",&n);
    	for(int i=1;i<=n;++i){
    		scanf("%lld%lld",&x,&y);
    		int tot=0;
    
    		for(int j=0;j<=y;++j){
    			tot+=quick_pow(x,j)%mod;
    		}
    		qy[1]*=tot;
    		qy[1]%=mod;
    	}
    
    	scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
    	
    	scanf("%lld",&m);
    	
    	for(int i=2;i<=m;++i){
    		px[i]=(a*px[i-1]*px[i-1]%d+b*px[i-1]%d+c%d)%d;
    		qy[i]=(a*qy[i-1]*qy[i-1]%d+b*qy[i-1]%d+c%d)%d;
    	}
    	/*
    	for(int i=1;i<=m;++i){
    		cout<<px[i]<<" ";
    	}
    	cout<<endl;
    		for(int i=1;i<=m;++i){
    		cout<<qy[i]<<" ";
    	}
    	cout<<endl;
    	*/
    	for(int i=1;i<=m;++i){
    		int maxx=0;
    		for(int j=1;j<=m;++j){
    			if(px[i]>qy[j]&&f[j]>maxx){
    				maxx=f[j];
    			}
    			if(px[i]==qy[j]&&f[j]<maxx+1){
    				f[j]=maxx+1;
    			}
    		}
    	}
    	
    	sort(f+1,f+m+1);
    	
    	printf("%lld",f[m]);
    	
    	fclose(stdin);
    	fclose(stdout);
    }
    
    
    • 1

    信息

    ID
    1025
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者