题解:P9788 [ROIR 2020 Day2] 区域规划
思路 1
观察式子,不妨设 exgcd,时间复杂度为
但还要注意
考虑容斥,答案即为 exgcd,时间复杂度为
综上所述,时间复杂度为
思路 2
当然是暴力加优化了。
我们固定
综上所述,时间复杂度
思路 2 代码如下
#include <bits/stdc++.h>
using namespace std;
#define rep(i, l, r) for(int i = l; i <= r; ++ i)
#define per(i, r, l) for(int i = r; i >= l; -- i)
int n, x, ans;
main()
{
cin >> n >> x;
for(int i = 1; i <= n + 1;++ i)
{
if(i == x) continue;
rep(j, i, n + 1)
{
if(j == x || i * j <= n) continue;
rep(k, max(1, (i * j - n) / j), i - 1)
{
if((i * j - n) / k >= j) continue;
if((i * j - n) % k == 0) ans += 1 + (i != j);
}
}
}
printf("%d", ans);
return 0;
}