Java Loops II

  • + 6 comments

    That's good. You can simplify even further if you realize that 2^0 + 2^1 + ... + 2^j = 2^(j+1) - 1

    class Solution{
        public static void main(String []argh){
            Scanner in = new Scanner(System.in);
            int t=in.nextInt();
            StringBuilder sb = new StringBuilder();
            for(int i=0;i<t;i++){
                int a = in.nextInt();
                int b = in.nextInt();
                int n = in.nextInt();
                sb.setLength(0);
                for(int j=0; j<n; ++j) {
                    // 2^0 + 2^1 + ... 2^j = 2^(j+1) - 1
                    sb.append((int) (a + b*(Math.pow(2, j+1) - 1))).append(" ");
                }
                System.out.println(sb.toString());
            }
            in.close();
        }
    }
    
    • + 2 comments

      What does variable 't' hold in this program?

      • + 1 comment

        The number of queries, which is the integer on the first line of the input.

        • + 3 comments

          then what's about n? I'm confuse in between these two. Can you please explain.

          • + 0 comments

            2 3 3 4 5 6 5 7 n = 8

          • + 0 comments

            t is No. queries and n is power of 2. With t we can execute the nested For-loop. As shown below..............

                Scanner in = new Scanner(System.in);
                int t=in.nextInt();
                for(int i = 0; i < t; i++){
                    int a = in.nextInt();
                    int b = in.nextInt();
                    int n = in.nextInt();
                        for(int j = 0; j < n; j++){
                            a = a + (int)Math.pow(2,j) * b;
                            System.out.print(a + " ");
                        }
            
                        System.out.println("");
                }
            
      • + 0 comments

        to get q

    • + 5 comments

      I didn't need to call the Math.pow() function.

      I used

      for(x = 0; x < n; x++) {
          result = a;
          for(h = 0; h <= x; h++)
              result += (1<< h) * b; 
          if ( x > 0)  System.out.printf(" ");
          System.out.printf("%d", result);
      } System.out.printf("\n");
      
      • + 2 comments

        what does this line(result += (1<< h) * b) do? what is the role of << operator?

        • + 2 comments

          a += b; is the same as a = a + b;

          (1<<h) Starts with 2 to the zeroth power, a binary 1, Shifts the number to the left by h binary bits, e.g 00000001 in binary left shift 1 becomes 00000010, left shift 2 becomes 00000100.

          Left-shifting a binary number by 1 bit position multiplies that number by 2. Left-shifting by 2 multiplies by 2^2. Left-shifting by 3 multiplies by 2^3, etc.

          • + 0 comments

            thankyou..

          • + 0 comments

            nice idea with the binary shift!

        • + 0 comments

          << is the bitwise left shift operator.

          1 << h takes the bits in 1 and shifts them with h positions to the left.

          1 << 0 == 1 1 << 1 == 2 1 << 2 == 4

      • + 0 comments

        for(int i=0;i

            sum= sum+b;
             System.out.print(sum+" ");
                b=2*b;
            }
        
             System.out.println("");
        }
        in.close();
        
      • + 0 comments

        Should be h<=x+1

      • + 0 comments

        best Answer Yet!

      • + 1 comment

        Why did you represent another variable result? Is it impossible if a is directly call in the for loop of shifting?

        • + 1 comment

          What does result do?

          • + 0 comments

            well doing so increases the looping hence it may cause time complexity issues (takes longer time ) hence to reduce that its easy to define another variable and assign it a value hence makes the process easy as looping tend to take much time to compile hence this shortens the time .

    • + 1 comment

      whats that String builder means?

      • + 0 comments

        It is one of the represents sequence of the character. But here you can change string value. because String Builder and String Buffer is mutable.

    • + 0 comments

      Could you please explain me about below three lines: 1. StringBuilder sb = new StringBuilder(); 2. sb.setLength(0); 3. sb.append((int) (a + b*(Math.pow(2, j+1) - 1))).append(" ");

    • + 1 comment

      ye math.pow kya hai

      • + 0 comments

        its predefine function.with the help of pow we can get power of any int value