题目大意 分析 根据题意易列出同余式 (y−1)∗d+x≡(x−1)∗d+y(mod w)(y-1)*d+x \equiv (x-1)*d+y \quad (mod \ w)(y−1)∗d+x≡(x−1)∗d+y(mod w) 化简得 x∗(d−1)≡y∗(d−1)(mod w)x*(d-1) \equiv y*(d-1) \quad (mod \ w)x∗(d−1)≡y∗(d−1)(mod w) 令 k=gcd( (d−1) , w )k = gcd( \ (d-1) \ , \ w \ )k=gcd( (d−1) , w ) 则 x≡y(mod w/k)x \equiv y \quad (mod \ w/k)x≡y(mod w/k) 这样分模数讨论即可且根据题意可知 x<y<=min(m,d)x < y <= min(m,d)x<y<=min(m,d) Code 1234567891011121314151617void solve(){ int m,d,w; cin>>m>>d>>w; int k = min(m,d); int res = 0; if((d-1) % w == 0){ res = k*(k-1)/2; } else{ int g = __gcd(w,d-1); w = w / g; int d = k / w; int dx = k - (k/w*w); res = d*(d+1)/2*dx + (d-1)*d/2*(w-dx); } cout << res << endl;}