zoukankan      html  css  js  c++  java
  • POJ 2100:Graveyard Design(Two pointers)

    【题目链接】 http://poj.org/problem?id=2100

    【题目大意】

      给出一个数,求将其拆分为几个连续的平方和的方案数

    【题解】

      对平方数列尺取即可。

    【代码】

    #include <cstdio>
    using namespace std;
    typedef long long LL;
    const int N=10000010;
    LL n,ansl[N],ansr[N];
    int main(){
        while(~scanf("%lld",&n)){
            LL l=1,r=0,s=0;int cnt=0;
            for(;l*l<=n;s-=l*l,l++){
                while((r+1)*(r+1)<=n&s<n){r++;s+=r*r;}
                if(s==n){ansl[++cnt]=l;ansr[cnt]=r+1;}
            }printf("%d
    ",cnt);
            for(int i=1;i<=cnt;i++){
                printf("%lld",ansr[i]-ansl[i]);
                for(int j=ansl[i];j<ansr[i];j++)printf(" %d",j);
                puts("");
            }
        }return 0;
    }
    

      

  • 相关阅读:
    哈夫曼树
    MongoDB
    Node.js 搭建Web
    Node.js
    HDFS编程
    scp
    MapRecude
    级数
    (转)MySQL百万级数据库优化
    ssh
  • 原文地址:https://www.cnblogs.com/forever97/p/poj2100.html
Copyright © 2011-2022 走看看