HD251HJ_HB5082

HD251HJ_HB5082原题链接描述Givenasequence1,2,3,……N,yourjobistocalculateallthepossiblesub-sequencesthatthesumofthesub-sequenceisM.输入Inputcontainsmultipletestcases.eachcasecontainstwoint…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

原题链接

描述

Given a sequence 1,2,3,……N, your job is to calculate all the possible sub-sequences that the sum of the sub-sequence is M.

输入

Input contains multiple test cases. each case contains two integers N, M( 1 <= N, M <= 1000000000).input ends with N = M = 0.

输出

For each test case, print all the possible sub-sequence that its sum is M.The format is show in the sample below.print a blank line after each test case.

样例输入

20 10
50 30
0 0

样例输出

[1,4]
[10,10]

[4,8]
[6,9]
[9,11]
[30,30]

思路

等差数列求和的变形。
\(S=\frac{(k+k+n-1)*n}{2}\)
\(2k=\frac{2s}{n}-n+1, n≤\sqrt{S}\)
枚举n然后算出k就好

代码

#include <bits/stdc++.h>
#define ll long long
using namespace std;

int main()
{
    ll n, m;
    while(~scanf("%lld %lld", &n, &m))
    {
        if(n + m == 0) break;
        ll k, t;
        for(t = sqrt(2 * m); t > 0; t--)
        {
            if(2 * m % t) continue;
            ll r = 2 * m / t - t + 1;
            if(r % 2) continue;
            k = r >> 1;
            printf("[%lld,%lld]\n", k, k + t - 1);
        }
        printf("\n");
    }
    return 0;
}

转载于:https://www.cnblogs.com/HackHarry/p/8371005.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/186755.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 阿帕基_jojo唯一一个没有荒木线的人

    阿帕基_jojo唯一一个没有荒木线的人阿帕基死前脑海里浮现的场景阿帕基:你在那里干什么啊?警察先生警察:抱歉打扰你吃饭了,我正在调查,我在采集指纹,昨晚,对面人行道上发生了一起抢劫案,被害者被人用酒瓶殴打,碎片散了一地。但人行道上的碎

    2022年8月1日
    6
  • vector初始化与清空[通俗易懂]

    vector初始化与清空[通俗易懂]vector初始化与清空vector初始化vector<int>v;如果直接进行访问v[i]会报错解决方案:可以使用v.resize(n)或者v.resize(n,m)来初始化,前者是使用n个0来初始化,后者是使用n个m来初始化。vector清空//1.clear,清空元素,但不回收空间v.clear();//2.swap,清空元素并回收内存vector<int>().swap

    2025年12月8日
    4
  • 学习成功:中学生成就梦想的15堂必修课

    学习成功:中学生成就梦想的15堂必修课管斌全:《学习成功:中学生成就梦想的15堂必修课》笛案:自信国内外成功学的著作看过不少,但我只向人推荐管斌全的作品。以下内容节选自网络,个人有渠道还是买书好,也算是对作者的支持。fygub0231@sina.com0571-63311953013567128396该书已经出版了4个版本。  第一个版本是由北京海潮出版社(2002年10月)出版,书名为《我信我能我

    2022年5月1日
    32
  • python 入门学习—模块导入三种方式及中文凝视

    python 入门学习—模块导入三种方式及中文凝视

    2022年1月20日
    59
  • C语言typedef函数指针用法

    C语言typedef函数指针用法1 简单的函数指针的应用形式 1 返回类型 函数名 参数表 char pFun int charglFun inta return voidmain pFun glFun pFun 2 第一行定义了一个指针变量 pFun 首先我们根据前面提到的 形式 1 认识到它是一个指向某种函数的指针 这种函数参数是一个 int 型 返回值是 char 类型 只有第一句我们还无法使用这个指针 因为我们还未对它进行赋值 第二行定义了一个函数 glFun

    2025年9月21日
    4
  • Vim复制粘贴_vim复制粘贴命令

    Vim复制粘贴_vim复制粘贴命令原文地址:http://lsong17.spaces.live.com/blog/cns!556C21919D77FB59!603.entry内容:用vim这么久了,始终也不知道怎么在vim中使用系统粘贴板,通常要在网上复制一段代码都是先gedit打开文件,中键粘贴后关闭,然后再用vim打开编辑,真的不爽;上次论坛上有人问到了怎么在vim中使用系统粘贴板,印象里回复很多,有好几

    2022年9月22日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号