zoukankan      html  css  js  c++  java
  • 2、找出所有和为S的连续整数集合

    题目要求:
    小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? 
    思路:定义l为首相,h为尾项,他们的和就是(l+h)*(h-l)/2,确定两个指针分别为首相和尾项,首相一定小于和的一半,先不变,确定他们的和与所求和的关系。相等时输出,然后令首相加一继续运算;小的话尾项继续加;大的话首相加;进行循环,得出结果。

    代码:

    import java.util.Scanner;
    public class two 
    {
        public static void main(String[] args) 
        {
            Scanner sb=new Scanner(System.in);
            int sum = sb.nextInt();
            int l=1;
            int h=2;
            int m=(sum+1)/2;
            while(l<m)
            {if((l+h)*(h-l)/2==sum)
                {System.out.println(l+"到"+h);
                 l++;
                 h++;}
            else 
                {
                if((l+h)*(h-l)/2<sum)
                    {h=h++;}
                else
                    {if((l+h)*(h-l+1)/2>sum)    
                        {l=l++;}
                    }
                }
            }
        }            
    }
                    
  • 相关阅读:
    MySQL ——索引原理与慢查询优化(Day45)
    mysql 练习题(Day44)
    MySQL 多表查询(Day43)
    MySQL 单表查询(Day42)
    MySQL -表完整性约束(Day41)
    回调函数
    进程池
    共享数据, 信号量(了解),事件(了解)
    管道
    python并发编程之多进程
  • 原文地址:https://www.cnblogs.com/lcxz/p/9038884.html
Copyright © 2011-2022 走看看