acm2058[通俗易懂]

acm2058[通俗易懂]intmain(){   intn,m; intl,i,a,b,s; while(scanf(“%d%d”,&n,&m),n+m)  { l=(int)sqrt(2*m); for(i=l;i>=1;i–)    { s=(2*m+i-i*i)/2; if(s%i==0)     

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

Jetbrains全系列IDE稳定放心使用

int main(){     
int n,m; 
int l,i,a,b,s; 
while (scanf(“%d%d”,&n,&m),n + m)    

l = (int)sqrt(2 * m); 
for (i = l; i >= 1; i–)        

s = (2*m + i – i*i)/2; 
if(s % i == 0)           

a = s / i; 
if(a+i-1 > n) break; 
printf(“[%d,%d]\n”,a,a + i – 1); 


printf(“\n”);   

return 0; 
}  

最后,说一下我对代码的解释

假设:1,2,3,…,n中的i个数(a1,a2,…,ai)满足sum(a1,a2,…,ai)=m。

那么,1<=a1<=m,

当a1=1时,i=ai,i取得最大值,由于i*(1+i)/2=m,i=sqrt(2*m-i)<sqrt(2*m);

当a1=m时,i=1,i取得最小值。

所以,1<=i<=sqrt(2*m)。

同时我们知道,两个长度都为i却不相同的连续数列,它们的和不可能都等于m。

从上面的讨论可知,满足要求的数列的长度i在[1,sqrt(2*m)]之间,且不重复。

现在从sum(a1,a2,…,ai)=m反推,由于ai=a1+i-1,可知:

sum(a1,a2,…,ai) = (a1+ai)*i/2 = (a1+a1+i-1)*i/2= m

a1*i = (2*m+i-i*i)/2 = s

那么,存在1,2,3,…,n中的i个数(a1,a2,…,ai)满足sum(a1,a2,…,ai)=m,

等价于,对于s=(2*m+i-i*i)/2有:s%i=0(因为a1=s/i),且s/i+i-1<=n(因为ai=s/i+i-1)

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

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

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


相关推荐

  • Git拉取代码报密码错误「建议收藏」

    Git拉取代码报密码错误「建议收藏」刚刚Git拉取代码,显示密码错误。我就奇怪了,密码输入了好几次,还是错误。但是马上得提交了,又很着急 ,将最简单的处理 方法忘记了。冷静下来,细细分析。刚学习时好像遇到过此类问题,于是直接删除凭证,再次拉取,正常。真的越着急越乱,遇到问题还是要冷静分析。…

    2022年6月13日
    36
  • 最短路径之Dijkstra(迪杰斯特拉)算法(无向图)

    最短路径之Dijkstra(迪杰斯特拉)算法(无向图)简介Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。由for循环可知,其时间复杂度是O(n^2)。原理在已知图的邻接矩阵net.vexs[i][j](无向网,含权值的图)的条件下,通过遍历已知图的所有路径,用dis[i]数组来记录到i点…

    2022年6月4日
    76
  • [开源夏令营][四] Docker remote API 之 镜像篇

    [开源夏令营][四] Docker remote API 之 镜像篇

    2021年12月1日
    57
  • linux.zip文件怎么解压,linux怎么解压zip文件[通俗易懂]

    linux.zip文件怎么解压,linux怎么解压zip文件[通俗易懂]ZIP是最广泛使用的归档文件格式,支持无损数据压缩。ZIP文件是包含一个或多个压缩文件或目录的数据容器在此文中将向您展示如何使用unzip命令通过命令行解压缩Linux系统中的文件Unzip命令,可帮助您列出,测试和提取压缩的ZIP归档安装unzip默认情况下,大多数Linux发行版中都没有安装Unzip,但您可以使用发行版的软件包管理器安装它。在Ubuntu和Debian上安装unzipsudo…

    2022年5月11日
    40
  • navicat连接oracle数据库失败_mysql数据库连接失败

    navicat连接oracle数据库失败_mysql数据库连接失败1、Navicat连接数据库失败,可能与密码、权限有关。报警内容:1251-Clientdoesnotsupportauthenticationprotocolrequestedbyserver;considerupgradingMySQLclient。解决办法:mysql-uroot-p,打开数据库,输入如下两条命令,问题解决。ALTERUSER’root’@’localhost’IDENTIFIEDWITHmysql_native_passwordBY’密码’;

    2022年10月10日
    2
  • NOIP2012 疫情控制[通俗易懂]

    NOIP2012 疫情控制[通俗易懂]也许更好的阅读体验Description\mathcal{Description}Description原题链接一句话题意一个人可以堵住一个子树,不能一次堵住整棵树,求堵住每个通往叶子节点的路径,走的最远的那个人走的路程最少是多少,若不能堵住输出−1-1−1Solution\mathcal{Solution}Solution看了下其他题解,都说很毒瘤最开始我也认为很毒瘤就是在决…

    2022年8月22日
    5

发表回复

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

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