CodeForces599D【数学】

题意:
给出一个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;
}


原文地址:https://www.cnblogs.com/keyboarder-zsq/p/6777443.html