template<class T> void exgcd(T a,T b,T &d,T &x,T &y){ if(!b) {d=a;x=1;y=0;} else {exgcd(b,a%b,d,y,x);y-=x*(a/b);} } //求解a*x=b mod n //如果有解那么解的个数有d=gcd(a,n)个 vector<long long > line_mod_equation(long long a,long long b,long long n){ long long x,y,d; vector<long long >ans; ans.clear(); exgcd(a,n,d,x,y); if(b%d==0){ x=((x%n)+n)%n;//获取x的最小正整数解 ans.push_back(x*(b/d)%(n/d)); for(long long i=1;i<d;++i) ans.push_back((ans[0]+i*n/d)%n); } return ans; }