给出一个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 ",num); for(int i=0;i<num;i++) printf("%lld %lld ",ans[i].a,ans[i].b); return 0; }