关闭

POJ 2100 Graveyard Design(尺取)

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

Description
将一个整数分解为连续数平方之和,有多少种分法
Input
一个整数n(1 <= n <= 1014 )
Output
输出所有分法
Sample Input
2030
Sample Output
2
4 21 22 23 24
3 25 26 27
Solution
尺取法
Code

#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<functional>
#include<queue>
using namespace std;
typedef long long ll;
vector< pair<ll,ll> >ans;
void solve(ll x)
{
    ll l=1,r=1,sum=0,sq;
    for(;;)
    {
        while(sum<x)
        {
            sq=r*r;
            sum+=sq;
            r++;//右端点右移 
        }
        if(sq>x)
            break;
        if(sum==x)//遇到可行解,记录 
            ans.push_back(make_pair(l,r));
        sum-=l*l;
        l++;//左端点右移 
    }
    ll m=ans.size();//解的个数 
    printf("%lld\n",m);
    for(ll i=0;i<m;i++)//输出所有可行解 
    {
        ll ansl=ans[i].first;
        ll ansr=ans[i].second;
        printf("%lld",ansr-ansl);
        for(int j=ansl;j<ansr;j++)
            printf(" %lld",j);
        printf("\n");
    }
}
int main()
{
    ll n;
    while(scanf("%lld",&n)!=EOF)
    {
        if(n==0)//输入结束条件 
            break;
        solve(n);
    }
    return 0;
}
0
0
查看评论

POJ 2100 Graveyard Design(尺取法)

Graveyard Design Time Limit: 10000MS   Memory Limit: 64000K Total Submissions: 5844   Accepted: 1376 ...
  • zwj1452267376
  • zwj1452267376
  • 2016-02-15 03:14
  • 538

poj 2100 Graveyard Design(尺取)

Graveyard Design Time Limit: 10000MS   Memory Limit: 64000K Total Submissions: 5957   Accepted: 1413 ...
  • qq_22522375
  • qq_22522375
  • 2016-05-01 20:29
  • 2586

poj 2100 Graveyard Design

最近怎么都是用long long 我的编译器就不能运行。。。。。 这道题用long long 就过了 我的vc++6.0   用 int 就wa #include int main(void) { long long int log[100000][2],num=0,i,k...
  • sky_zdk
  • sky_zdk
  • 2017-03-18 16:11
  • 259

POJ 2100 Graveyard Design

Time Limit: 10000MS Memory Limit: 64000K Total Submissions: 4589 Accepted: 980 Case Time Limit: 2000MS
  • u013287817
  • u013287817
  • 2014-07-11 16:54
  • 320

POJ 2100 - Graveyard Design(尺取法)

题目: http://poj.org/problem?id=2100 题意: 是否存在一段连续的数, 平方相加等于n, 求出方案数并输出方案. 思路: 尺取法. AC. #include #include #include using namespace std; typ...
  • u013534690
  • u013534690
  • 2015-03-11 20:28
  • 716

POJ - 2100 Graveyard Design(尺取法)

题目大意:给出一个数,问这个数有多少种组合方式 组合的规则为,该数为一系列连续的数的平方和解题思路:尺取法的基本题了#include <cstdio> #include <vector> using namespace std;#define ll long long co...
  • L123012013048
  • L123012013048
  • 2015-09-16 14:41
  • 239

POJ 2100 · Graveyard Design【尺取法】

尺取法,难度中等。
  • qq_32265245
  • qq_32265245
  • 2017-05-11 22:06
  • 112

POJ 2100 Graveyard Design(尺取法)

Graveyard Design Time Limit: 10000MS   Memory Limit: 64000K Total Submissions: 6370   Accepted: 1514 Case Time L...
  • yjf3151731373
  • yjf3151731373
  • 2016-10-25 08:34
  • 93

POJ 2100 Graveyard Design 尺取法

Graveyard Design Crawling in process... Crawling failed                ...
  • silence255713
  • silence255713
  • 2016-08-10 16:57
  • 95

【POJ】2100 - Graveyard Design 尺取法

http://poj.org/problem?id=2100将一个整数分解为连续数平方之和,有多少种分法?简单尺取法。#include <iostream> #include <cstdio> #include <cstring> #include <cma...
  • zqf3535
  • zqf3535
  • 2017-08-29 15:14
  • 96
    个人资料
    • 访问:548636次
    • 积分:24492
    • 等级:
    • 排名:第322名
    • 原创:1943篇
    • 转载:0篇
    • 译文:0篇
    • 评论:68条
    最新评论