• 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++;}
                    }
                }
            }
        }            
    }
                    
  • 相关阅读:
    3-4: 一元多项式的乘法与加法运算
    设计模式一装饰者模式
    设计模式一组合模式
    设计模式一命令模式
    设计模式一建造者模式
    设计模式一桥接模式
    设计模式一适配器模式
    设计模式一抽象工厂模式
    排序算法一二分排序
    排序算法一希尔排序
  • 原文地址:https://www.cnblogs.com/lcxz/p/9038884.html
Copyright © 2020-2023  润新知