关闭

Codeforces Round #332 (Div. 2)D. Spongebob and Squares(数学方程,暴力)

226人阅读 评论(0) 收藏 举报
分类:

题目链接
题意:给你一个数X问,n*m的矩形中,面积不同的正方形的个数和是X。输出所有的 n * m
解法:这里写图片描述
然后继续化简是6*x+n^3-n=(3 * n^2+3 * n) * m是关于m的函数,我们直接枚举n,就好了,注意上限,


#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define X first
#define Y second
#define cl(a,b) memset(a,b,sizeof(a))
typedef pair<long long ,long long > P;
const int maxn=100005;
const LL inf=1LL<<45;
const LL mod=1e9+7;
vector<P> ans;
int main(){
    LL x;scanf("%lld",&x);
    ans.pb(P(1,x/1));
    bool same=false;
    if(1==x/1)same=true;
    for(LL n=2;n<=10000000||n*n*n<=x;n++){
        LL a=6*x+n*n*n-n;
        LL b=3*n*n+3*n;
        if(a%b==0){
            if(n==a/b)same=true;
            if(n<=a/b)ans.pb(P(n,a/b));
        }
    }

    int N=2*ans.size();
    if(same)N-=1;
    printf("%d\n",N);
    for(int i=0;i<ans.size();i++){
        printf("%lld %lld\n",ans[i].X,ans[i].Y);
    }
     for(int i=ans.size()-1;i>=0;i--){
        if(ans[i].X!=ans[i].Y)printf("%lld %lld\n",ans[i].Y,ans[i].X);
    }
    return 0;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:176690次
    • 积分:6760
    • 等级:
    • 排名:第3626名
    • 原创:522篇
    • 转载:3篇
    • 译文:0篇
    • 评论:12条
    文章分类
    最新评论