题解:CF1389E Calendar Ambiguity
William2022 · · 题解
CF1389E
入手
因为星期几有周期性,可以转化为同余问题。
移项并因式分解得:
我们将
也就是:
现在请读者将
解法
两边同除
因为
所以只能是:
我们换个元,令
此时,我们可以将问题简化了:
存在多少个数对
这个问题已经非常简单了,我们已经将一道蓝题转化为橙题了!
但你如果还需要做法:
令
-
y-x\leq 0$ 时,不满足 $x<y -
-
-
计算最大可能的
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll m,d,w;
ll gcd(ll a,ll b){return (!b?a:gcd(b,a%b));}
ll solve(){
scanf("%lld%lld%lld",&m,&d,&w);
ll L=min(m,d);// 指 x,y 介于 [1,L]
ll D=w/gcd(d-1,w);// D | y-x;
ll cnt=L/D;// 即上文中最大的 k
ll ans=cnt*L-D*(cnt+1)*cnt/2;
return ans;
}
signed main(){
int T;scanf("%d",&T);
while(T--)printf("%lld\n",solve());
}