题解:P9788 [ROIR 2020] 区域规划 (Day2)
mairuisheng · · 题解
-
题目:P9788 [ROIR 2020] 区域规划 (Day2)
-
主要算法:枚举(剪枝)。
-
分析:
先倒序枚举
由于
剪枝①:如果当前
再枚举
剪枝②:
题目条件
最后
:::info[参考代码]
//Author: mairuisheng
//#pragma GCC optimize(3)
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
inline int read()
{
int x=0,f=1;
char s;
s=getchar();
while(s<48||s>57)
{
if(s=='-')f=-f;
s=getchar();
}
while(s>47&&s<58)
{
x=(x<<3)+(x<<1)+s-48;
s=getchar();
}
return x*f;
}
int n,x;
int ans;
int main()
{
n=read();
x=read();
int i,j,k,l;
for(i=n;i>0;--i)
{
if(i==x)continue;
for(j=n;j>=i;--j)
{
if(j==x)continue;
if(i*j<=n)break;
l=i*j-n;
for(k=max(1,l/(j-1));k<i;++k)
{
if(l%k!=0||l/k>=j)continue;
++ans;
if(i!=j)++ans;
}
}
}
printf("%d",ans);
return 0;
}
:::