题解:CF2044E Insane Problem
yangjinqian · · 题解
题意很清楚,这里不再阐述,这是一道推公式的题目。
思路
由题意,
两边同时乘
由于
那么很简单,枚举
什么?你问我交集怎么求?设两不等式
那代码就很简单了,但是注意细节。
code
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll T, k, l1, r1, l2, r2;
int main(){
cin >> T;
while (T--){
cin >> k >> l1 >> r1 >> l2 >> r2;
ll sum = 0, ksm = 1ll;
for (ll i = 0; r2 / ksm >= l1; i++) sum += max(0ll, min(r1, r2 / ksm) - max(l1, (l2 - 1ll) / ksm + 1) + 1ll), ksm *= k;
cout << sum << endl;
}
return 0;
}