POJ 2100 Graveyard Design 尺取法

                                                                                             

题意:给你一个数 求一个连续序列的元素的平方之和 等于这个数 输出数量 还有区间长度及各个元素
ACcode:
 
#include 
#include 
#include 
#include 
#include
 using namespace std;
typedef long long LL;
typedef pairpii;
vectorv;
int main()
{
    long long n, k, ans = 0;
    while (scanf("%I64d",&n)!=EOF)
    {
        k = sqrt(n);
        v.clear();
        LL l = 1, r = 1, cnt = 1;
        while (1)
        {
            while (r <= k && cnt < n)
            {
                r++;
                cnt += r*r;
            }
            if (cnt < n )
                break;
            if (cnt == n)
            {
                v.push_back(make_pair(l, r));
            }
            cnt -= l*l;
            l++;
        }
        LL len = v.size();
        printf("%I64d\n", len);
        for (int i = 0; i < len; i++)
        {
            printf("%I64d", v[i].second - v[i].first + 1);
            for (LL j = v[i].first; j <= v[i].second ; j++)
            {
                printf(" %I64d", j);
            }
            printf("\n");
        }
    }
    return 0;
}

你可能感兴趣的:(#,其他)