zoukankan      html  css  js  c++  java
  • hdu2058java

    The sum problem

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


    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]

    /*import java.util.*;
    class Main{
    public static void main(String args[])
    {Scanner cin=new Scanner(System.in);
    while(cin.hasNext())
    {int n=cin.nextInt();
    int m=cin.nextInt();
    if(n==0&&m==0)
    break;
    for(int i=1;i<=n;i++)
    {int sum=i;
    int k=0,s=0,flag=0;
    for(int j=i+1;j<=n;j++)
    { sum+=j;
    if(sum==m)
    {flag=1;
    k=i;
    s=j;
    break;}
    else if(sum>m)
    {break;
    }
    }
    if(flag==1)
    System.out.println("["+k+","+s+"]");
    }
    if(n>=m)
    System.out.println("["+m+","+m+"]");
    System.out.println();
    }
    }
    }*/

    上面的那个代码会超时,下面的代码不会超时,这是一个数学题,a+(i*(i+1)/2)=m,当a最小的时候是等于1,所以1+(i*(i+1)/2)<=m;

    所以i<=sqrt(2*m);因为这是一个等差数列,d为1;
    import java.util.*;
    class Main{
    public static void main(String args[])
    {Scanner cin=new Scanner(System.in);
    while(cin.hasNext())
    {long n=cin.nextInt();
    long m=cin.nextInt();
    if(n==0&&m==0)
    break;
    long d=0;
    for(int i=(int)Math.sqrt(2*m);i>0;i--)
    {
    d=m-(i+i*i)/2;
    if(d%i==0)
    System.out.println("["+(d/i+1)+","+(d/i+i)+"]");
    }

    System.out.println();
    }
    }
    }

  • 相关阅读:
    CF1036C Solution
    CF1041E Solution
    CF1043E Solution
    CF1054D Solution
    CF1032D Solution
    题解 P6194 【[EER1]苏联人】
    题解 CF1324A 【Yet Another Tetris Problem】
    题解 CF1325A 【EhAb AnD gCd】
    题解 CF1325B 【CopyCopyCopyCopyCopy】
    题解 AT5805 【Bishop】
  • 原文地址:https://www.cnblogs.com/1314wamm/p/5388831.html
Copyright © 2011-2022 走看看