HDU 2058 The sum problem——————数学

The sum problem——关于连续子数列的求和问题 The sum problem 阅读详情

The sum problem

Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 31416 Accepted Submission(s): 9409


Problem Description

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

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

Output

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.


Sample Input

20 10
50 30
0 0

Sample Output

[1,4]
[10,10]

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


这道题的答案可以根据等差数列的性质得到:
最大的区间长度 :
由1+2+3+⋯+2m&gt;m\large \sqrt{1+2+3+\cdots+2m}&gt; m1+2+3+⋯+2m​>m
lmax=2×m\large l_{max} =\sqrt{2\times m}lmax​=2×m​

由等差数列
Sn=(a1+an)×n2\Large S_n = \frac{(a_1 + a_n)\times n}{2}Sn​=2(a1​+an​)×n​
Sn=(a1+a1+d∗(n−1))×n2\Large S_n = \frac{(a_1 + a_1+d*(n-1))\times n}{2}Sn​=2(a1​+a1​+d∗(n−1))×n​
Sn=(2∗a1+d∗(n−1))×n2\Large S_n = \frac{(2*a_1+d*(n-1))\times n}{2}Sn​=2(2∗a1​+d∗(n−1))×n​

又因为d=1,故:
Sn=(2∗a1+n−1)×n2\Large S_n = \frac{(2*a_1+n-1)\times n}{2}Sn​=2(2∗a1​+n−1)×n​
a1=Snn−n−12\Large a_1 = \frac{S_n}{n}-\frac{n-1}{2}a1​=nSn​​−2n−1​
那么
an=a1+n−1\Large a_n = a_1 + n-1an​=a1​+n−1

对于这一道题:m就相当于Sn,
假设&ThickSpace;m=(ai+aj)×(j−i+1)2\;\Large m = \frac{(a_i+a_j)\times (j-i+1)}{2}m=2(ai​+aj​)×(j−i+1)​
我们可以枚举aia_iai​
因为我们知道最大的区间长度为lmax=2×m\large l_{max} =\sqrt{2\times m}lmax​=2×m​
所以枚举1到l1到l1到l的所有值
那么根据上边的可以得到
a1=ml−l−12\Large a_1 = \frac{m}{l}-\frac{l-1}{2}a1​=lm​−2l−1​
an=a1+n−1\Large a_n = a_1 + n-1an​=a1​+n−1
只要(a1+a2)∗l2==m(a_1+a_2)*\frac{l}{2} == m(a1​+a2​)∗2l​==m
就好了

代码很短,就这几行:


#include<bits/stdc++.h>
using namespace std;
int main()
{
        int n,m;
        while(~scanf("%d %d",&n,&m)&&(n|m))
        {
                int l=sqrt(2*m);//最大区间长度为 L
                int a1,an;
                for(int k=l;k>0;--k)//区间长度为k
                {
                        a1 = m/k-(k-1)/2;
                        an = a1 + k-1;
                        if((a1 + an )*k/2 == m)
                                printf("[%d,%d]\n",a1,an);
                }
                printf("\n");
        }
        return 0;
}

【题解】- hdu The sum problem【技巧】 The sum problem 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 Input contains multiple test cases. each case contains t... 阅读详情

相关推荐

经典蓝牙中的Sniff、Hold与Park模式

若主设备在Sniff Attempt窗口外发送数据,从设备无法接收,需依赖重传机制。移动时立即传输数据。:Sniff Interval=20ms,Attempt=1时隙。:传感器每2秒唤醒一次同步信标,主设备按需唤醒特定传感器采集数据。Slave进入Sniff模式:每20ms唤醒1个时隙监听数据。:设备需要短暂执行高优先级任务(如扫描其他蓝牙设备)。:无数据传输超时后,设备可能自动进入Sniff模式。:主设备通过信标唤醒从设备,或从设备主动请求退出(:平衡功耗与响应速度,适合间歇性数据传输设备。

shishuangquan111的博客 1673

HDOJ2058_The sum problem

Problem Description 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 Input contains multiple test cases. each

BarryLee的博客 410

ad23新版Geber导出-官方教程(22.11版本后)

AD23新版本geber文件导出(含官方教程)-22.11之后的版本均可用此教程

安和的博客 3万+

The sum problem

The sum problem Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 16197 Accepted Submission(s): 4843 Problem Description Given a sequence 1,

Briup-z.changhai 694

手把手教你搞定MT6701磁编码器的SSI通信与CRC-6校验(附避坑代码)

本文详细介绍了MT6701磁编码器的SSI通信与CRC-6校验的实现方法,包括硬件连接、时序配置、数据读取和专用CRC-6算法。通过提供避坑代码和常见问题解决方案,帮助开发者快速掌握磁编芯片的调试技巧,确保通信稳定可靠。

weixin_30872337的博客 218

AI小智语音服务架构与嵌入式成本优化实践

语音交互系统是智能硬件的核心能力,其本质是端云协同的实时数据处理链路,涵盖音频采集、流式传输、语义理解与语音合成四大技术环节。原理上需严格划分物理层(确定性音频I/O)、协议层(WebSocket/Range可靠性通信)和语义层(ASR/LLM/TTS职责解耦),以保障低延迟与高可用。技术价值在于通过VAD前置过滤、分块下载、Token截断等嵌入式级优化,显著降低云端调用成本与网络开销。典型应用场景包括儿童故事机、智能音箱、教育机器人等对响应速度、音色自然度和单次交互成本敏感的AI小智设备。本文聚焦火山引擎

weixin_30653091的博客 351

2020-11-08

The sum problem Problem Description 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. 给出一个序列1,2,3…N,你的任务是计算出所有可能的和为M的子序列 Input Input contains multiple test cases. each case contai

CHEN_XU_LING的博客 305

相机标定-张正友棋盘格标定法

(X,Y,Z)为在世界坐标系下一点的物理坐标 ( u , v ) 为该点对应的在像素坐标系下的像素坐标 引入齐次坐标的原因:引入齐次坐标的目的是为了升维,将坐标从二维坐标变为三维坐标。 2.相机成像过程 相机成像系统中,共包含四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。 (1)世界坐标系(,,) 描述目标在真实世界中的位置引入的参考坐标系。 (2)相机坐标系(,,) ...

qq_41275123的博客 1万+

hdu 2058 The sum problem (数学问题)

题目意思: http://acm.hdu.edu.cn/showproblem.php?pid=2058 给出n和m,在小于n的数中,找出连续的序列,使其和为m,并从小到大输出。 题目分析: 第一次见这种题,就模拟,很显然超时了,后来在《短码之美》上看到了好的解决方法,和详细讲解,现在我只会用,不知道怎么说明白了,我也是醉了。。。 AC代码: /** *@xia

机器笨猫 1069

SOC、SOH、OCV

1)放电实验法的测量SOH结果最为准确,但是深度放电会对影响电池的寿命;2)电阻折算法仅将电阻作为评价SOH的依据,但电池老化时电阻的变化范围较小,因此该方法的误差较大;3)电阻折算法需要对电池进行大量的实验,绘制成Map图,但是该方法有一定的局限性,针对不同的电池需要绘制不同的Map图;4)阻抗分析法是目前最为前沿的方法,可以根据阻抗谱较为直观的分析SOH的变化,但是该方法需要的成本较高,每台设备约为5万美元。

m0_61973119的博客 2万+

【人工智能的数学基础】最优传输(Optimal Transport)问题与Wasserstein距离

代表两堆石子,则问题等价于如何移动一堆石子,通过最小的累积移动距离把它堆成另外一堆石子。的不同位置分配的值。为离散型概率分布,则该优化问题可以表示为矩阵形式。表示寻找总运输成本最小的方案。放大后的上确界不会小于原来的上确界,因此不妨取。具有相同的概率分布。是概率分布,因此积分可以写作采样形式。描述了一种可行的运输方案,表示应该从位置。则最优传输问题的目标函数可以用列向量。对于一个线性规划问题,总可以写出其。的所有可能联合分布的集合,下确界。其中矩阵的每一行代表概率分布。表示寻找使得目标函数最大的。

AI天才研究院 6328

HDU 2058 The sum problem [数学]

从今天开始 水题再不记! 凡是记得题,都是不水的。Description输入N M 在1..N中找到连续字串的和==M 每一个输出之后空一行Sample Input20 10 50 30 0 0Sample Output[1,4] [10,10][4,8] [6,9] [9,11] [30,30]Algorithm数学题 设要输出的 [x,x+y] 则有 (x + x+y)*

more time 384

C++ Qt6 qml CMakeLists.txt如何添加qrc文件

本文介绍了在Qt6项目中如何通过CMake管理QML图片资源。相比Qt5的qmake,CMake需要手动创建qrc文件并配置CMakeLists.txt。关键步骤包括:1)创建resources.qrc文件并添加图片资源;2)在CMakeLists.txt中设置CMAKE_AUTORCC为ON开启自动资源处理;3)使用qt_add_resources将qrc文件绑定到项目。配置完成后,可通过"qrc:alias"方式引用资源图片,解决了相对路径管理复杂的问题。

琅嬛福地 1453

HDU2058 The sum problem(数学问题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2058 分析: 让求一段连续的字串其和等于M。那么这段字串的形式必然是 a+1 a+2 .......a+d 这样的形式,由等差数列求和公式可得(a+1 + a+d) * d/ 2 = M,化简展开得 2ad + d + d^2 = 2M,可得 d*d < 2M,从这里知道d得范围。在前面的...

成龙大侠的博客 382

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

HDU2058 The sum problem【数学计算+枚举】

The sum problem Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 26343    Accepted Submission(s): 7884 Problem Description Given a sequenc

海岛Blog 994

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

hdu 2058 The sum problem(数学题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2058 Time Limit: 5000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 18137Accepted Submission(s): 53...

weixin_30555515的博客 181

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

HDU 2058 The sum problem(数学)

The sum problem Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 28609 Accepted Submission(s): 8604 Problem Description Given a sequence

q435201823的博客 163

HDU 2058 The sum problem 数学题

解题报告:可以说是一个纯数学题,要用到二元一次和二元二次解方程,我们假设[a,b]这个区间的所有的数的和是N,由此,我们可以得到以下公式: (b-a+1)*(a+b) / 2 = N;很显然,这是一个二元一次方程,如果可以解出这个方程里的a,b就可以了,N是已知的,那么可以怎么一个公式怎么解二元方程呢?这里有两种方法可以选择,第一种是可以枚举a = 1,2,3.....,一直枚举到N/2,a是不...

weixin_30363509的博客 145

HDU 2058 The sum problem (数学)

the sum problem Time Limit: 5000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 32097Accepted Submission(s): 9580 ...

xcatf的博客 177

hdu 2058 The sum problem 数学题,想了好久,,

// 公式 m=(a+a+k-1)*k/2; k为长度 a为起始数字 //开始的时候,是想用 起点和终点来当变量的. 后来wa了. 认真想想,是因为这两个变量 就算用了二次函数的公式推导来优化. //也都会在数据为 n=10^9 m=1 或n=10^9 m=10^9 的时候需要遍历一次.显然超时的. //无奈看了讨论, 看到别人用区间长度来做 恍然大悟粗略估计下 k就不能超过sqrt(2m)这个量级, 看下数据的强弱 显然是可以过的.

万事屋 798

HDU 2058:The sum problem(数学)

The sum problem Time Limit: 5000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 31453Accepted Submission(s): 9414 Problem Description G...

weixin_34360651的博客 133

HDU-2058-The sum problem(数学题技巧型)

题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2058 思路: 这题的n,m都很大,很显然直接暴力,会超时,那就不能全部都找了,利用等差数列求和公式, (1)sn=n*(a1+an)/2; 即可代入公式,(2)m=(e-s+1)*(s+e)/2 注释*******//s代表起点,e代表终点。 ...

weixin_30340617的博客 130
上一篇: 51Nod 1092 回文字符串——————LCM
下一篇: NYOJ 12 喷水装置(二)——————贪心,区间覆盖
陶鸿杰
博客等级 码龄9年 93粉丝 298原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值