给出一个x,求有多少个矩阵中满足存在x个不同的正方形。
思路:
(数学渣+推理渣)
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL N=1e6+10;
struct asd{
LL a,b;
};
asd ans[N];
int num;
bool cmp(asd x,asd y)
{
return x.a<y.a;
}
int main()
{
LL x;
LL aa,bb,cc;
scanf("%lld",&x);
num=0;
for(LL i=1;i<2*N;i++)
{
aa=6*x+i*i*i-i;
bb=3*i*(i+1);
if(aa%bb==0)
{
cc=aa/bb;
if(i>cc)
break;
ans[num].a=i;
ans[num++].b=cc;
if(i!=cc)
{
ans[num].a=cc;
ans[num++].b=i;
}
else
break;
}
}
sort(ans,ans+num,cmp);
printf("%d\n",num);
for(int i=0;i<num;i++)
printf("%lld %lld\n",ans[i].a,ans[i].b);
return 0;
}