1 条题解

  • 0
    @ 2021-6-15 14:30:39

    C++ :

    #include<bits/stdc++.h>
    #define maxn 1001000
    using namespace std;
    int dis[maxn];
    int m,n,s0,a[20],b[20],q[maxn],l,r;
    int main(){
    	scanf("%d%d%d",&m,&n,&s0);
    	q[r++]=s0,dis[s0]=1;
    	for(int i=1;i<=n;++i)scanf("%d%d",&a[i],&b[i]);
    	while(l<r){
    		int u=q[l++];
    		if(u==0){
    			printf("%d\n",dis[0]-1);
    			return 0;
    		}
    		for(int i=1;i<=n;++i){
    			int nxt=(1ll*a[i]*u+b[i])%m;
    			if(!dis[nxt])dis[nxt]=dis[u]+1,q[r++]=nxt;
    		}
    	}
    	puts("-1");
    }
    
    • 1

    信息

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