题意:定义一年为 m个月,每个月d天 ,每周有 w天。找到有多少对 (x,y) 满足 x月的第 y天 和 y 月的第 x天是同一星期。
题解:
可以相应推出:
(x-1)*d+y≡(y-1)*d+x(mod w)
(x-y)*(d-1)≡0 (mod w)
于是:(x-y)*(d-1)-k*w=0 => (x-y)*(d-1)=k*w =>(x-y)=(k*w)/(d-1)=>(x-y)=p(未知倍数)*(lcm(d-1,w)/(d-1));
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t;
cin>>t;
while(t--){
int m,d,w;
cin>>m>>d>>w;
int minl=min(m,d);
if((d-1)%w==0){
int ans=(minl*(minl-1))/2;
cout<<ans<<"\n";
continue;
}
else {
w/=(__gcd(w,d-1));
int num=(minl/w);
int res1=(minl%w);
int res2=w-res1;
int ans=res2*(num*(num-1)/2)+res1*((num)*(num+1)/2);
cout<<ans<<"\n";
}
}
}