- Quiz
- AC
- 解説
- L<=A<=Rなどの制約が扱いづらいので、全体からLを引いて0<=a<=R-L (A-L=aとおく)として扱いやすくする
- 満たすべき条件「A = B + C」もそれに従ってa,b,cの式になる(下図)
- 後は式変形していくと数えられる(下図)
void solve(){ ll l,r;cin>>l>>r; ll d = r-2*l+1; if(d<0){ p(0);return; } ll ans = d * (d+1) / 2; p(ans); } int main(){ cin.tie(0); ios::sync_with_stdio(false); // input ll N; cin>>N; while(N--)solve(); return 0; }
別解:L,Rのまま図形的に考える
- 最終的には上の解法と同じ式に帰着する
- 条件を満たすのは下図のように三角領域になるので、辺の長さが分かれば求まる
- 辺の長さは値域から求まる