一、题目

http://acm.wust.edu.cn/problem.php?id=1192&soj=0

二、分析

  1. 要求从序列1,2,3,,,N,中截取一部分使他们的和为M
  2. 输入多组数据
  3. 输入0 0结束
  4. 每组数据结束有一个空行

三、思路

  1. 定义i,j,且1<=i<=j<=N,计算从i至j的数据的和sum,sum=(i+j)*(j-i+1)/2,sum与M比较,若相等则输出i,j。当输入100000 100000时,运行的时间较长(我没提交不知道有没有超时)。
  2. 改进一下,1<=i<=j<=min(N,M),与方法1比较,增加了取较小数,因为当i或j大于M时,显然sum是大于M的,所以取小,运行时间略微缩短,取决于N和M之间的差距。
  3. 再次改进,当i和j满足时,j继续自增时,sum肯定大于M,直接退出内层循环,同理当sum大于M时,也直接退出内层循环。

四、代码

#include<stdio.h>
int main() {
int n, m, i, j, sum;
while (scanf("%d%d", &n, &m) && n != 0 && m != 0) {
n = n > m ? m : n; // 取n和m中较小的数赋值给n
for (i = 1; i <= n; i++) { // 从1到n
for (j = i; j <= n; j++) { // 从i到n
sum = (i + j)*(j - i + 1) / 2; // 计算i,i+1,……,j-1,j的和
if (sum == m) {
printf("[%d,%d]\n", i, j);
break; // 退出内层循环
}
else if(sum > m) { // 大于的话直接退出内层循环
break;
}
}
}
printf("\n"); // 本组数据结束换行
}
return 0;
}

五、截图

1192: 零起点学算法99——The sum problem(C)的更多相关文章

  1. 1135: 零起点学算法42——多组测试数据(求和)IV

    1135: 零起点学算法42--多组测试数据(求和)IV Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted ...

  2. 1164: 零起点学算法71——C语言合法标识符(存在问题)

    1164: 零起点学算法71——C语言合法标识符 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 10 ...

  3. 1163: 零起点学算法70——Yes,I can!

    1163: 零起点学算法70--Yes,I can! Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: ...

  4. 1147: 零起点学算法54——Fibonacc

    1147: 零起点学算法54--Fibonacc Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 20 ...

  5. 1145: 零起点学算法52——数组中删数II

    1145: 零起点学算法52--数组中删数II Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 293 ...

  6. 1137: 零起点学算法44——多组测试数据输出II

    1137: 零起点学算法44--多组测试数据输出II Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: ...

  7. 1136: 零起点学算法43——多组测试数据输出I

    1136: 零起点学算法43--多组测试数据输出I Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lldSubmitted: ...

  8. 1134: 零起点学算法41——多组测试数据(a+b)III

    1134: 零起点学算法41--多组测试数据(a+b)III Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitt ...

  9. 1133: 零起点学算法40——多组测试数据(a+b)II

    1133: 零起点学算法40--多组测试数据(a+b)II Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitte ...

随机推荐

  1. excel被保护或者锁定时候按住alt和enter可以输入换行

    excel被保护或者锁定时候按住alt和enter可以输入换行

  2. [转载]virtual topology虚拟拓扑

    原文地址:topology虚拟拓扑">virtual topology虚拟拓扑作者:一丝尘埃 topology虚拟拓扑" title="[转载]virtual to ...

  3. ICEMCFD中,face裂缝修复的小窍门【转载】

    转载自:http://blog.sina.com.cn/s/blog_4a21884b010005ng.html 采用ICEMCFD画网格的初学者,都对由cad(proe/ug/solidworks) ...

  4. C语言结构体笔记

    typedef给结构起别名 可以是匿名结构或者普通的结构,方便后面使用. #include<stdio.h> typedef struct{ //匿名结构 float tank_capac ...

  5. PyTricks-函数参数的解包操作

    def myfunc(x, y, z): print(x, y, z) tuple_vec = (1, 0, 1) dict_vec = {'x': 1, 'y': 0, 'z': 1} >&g ...

  6. Spring tools

    sts是什么? sts是spring tool suite的缩写,是基于eclipse的.开发spring应用的定制的开发环境. 提供了什么? 实现.调试.运行.部署spring应用的现成的环境.包括 ...

  7. linux使用nslookup查询dns

    nslookup命令主要用于查询DNS信息 nslookup工具的安装以及使用使用yum install bind-utils安装即可 交互模式与非交互模式直接运行nslookup即可进入交互模式,连 ...

  8. Kafka、RabbitMQ、RocketMQ、ActiveMQ消息中间件的对比--多年生产经验实践总结

    引言 分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦.现在开源的消息中间件有很多,前段时间我们自家的产品 RocketMQ (MetaQ的内核) 也顺利开源,得到大家的关注. ...

  9. java udp通信

    package net.kkxm.kms;  import java.net.DatagramPacket; import java.net.DatagramSocket; import java.n ...

  10. Django和Flask这两个框架对比

    Flask 在 Django 之后发布,现阶段有大量的插件和扩展满足不同需要 Django发布于2005年,Flask创始于2010年年中. Django功能大而全,Flask只包含基本的配置,  D ...