Java Loops II

  • + 29 comments

    Guys, done without creating another object please checkout

    class Solution{
        public static void main(String []argh){
            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("");
            }
            in.close();
    
        }
    }
    
    • + 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

    • + 1 comment

      Is Math.pow() an inbuilt function in JAVA?

      • + 1 comment

        Yes

        • + 5 comments

          what is the function of math.pow

          • + 0 comments

            math.pow(2, 3) is 2^3 (3rd power of two) and will result in 8. Basic math.

          • + 0 comments

            yes

          • + 0 comments

            to the power of

          • + 0 comments

            Math.pow() is a function that is provided to us by Java. Here, it takes 2 parameters. When I pass in 2 and j, it does exponentiation (known as "power") as 2 to the j-th power. For example, Math.pow(3,5) = 3 * 3 * 3 * 3 * 3.

            Also, Math.pow() returns a double instead of an int. We "cast" it to an integer by putting

            (int)

          • + 0 comments

            exponentiation

    • + 0 comments

      excellent

    • + 1 comment

      Sir, It dosen't Work.The line"System.out.println("");"does not change the line for 2nd input.

      • + 0 comments

        make sure, it is after the block.

    • + 0 comments

      I also do this,but it is wrong!Why?

    • + 0 comments

      here a = a + (int)Math.pow(2,j)*b;

      why we used a= a + __ : can we use another integer like int c=0; c= a + (int)Math.pow(2,j)*b;

      if not please explain

    • + 0 comments

      why u use t integer variable here?

    • + 0 comments

      Clear and Perfect...!! Thanks

    • + 2 comments

      Yes.This is correct. But I have one question... In the series we can see evey value is multiply by b.(either first a also).But in your code I can't see that. But your one gives correct answer. Can you please explain that for me?

      I used this and this gives wrong answerI can't realize why it is wrong???

      import java.util.*;
      import java.io.*;
      
      class Solution{
          public static void main(String []argh){
              Scanner in = new Scanner(System.in);
              
              int t=in.nextInt();
              
              for(int q1=0;q1<t;q1++){
                  
                  int a = in.nextInt();
                  int b = in.nextInt();
                  int n = in.nextInt();
                  int ans=a+1*b;   
                      for(int j=0;j<n;j++){
                          int x=2^j*b;
                          ans+=x;
                         System.out.print(ans+" ");
                          
                         
                          
                       }
                   
                  System.out.println();
              }
      
              
              in.close();
          }
      }
      
      • + 1 comment

        This line:

        int ans=a+1*b;
        

        Should be:

        int ans = a;
        

        Since you're loop from 0 you code is calculating a + 2^0*b twice and you will get a wrong result.

        And this line:

        int x=2^j*b;
        

        The '^' it xor (exclusive or) operator not pow operator. You have to use Math.pow(); or a shift operation.

        • + 0 comments

          Thank You. I have used the shift operation as you said but two test cases failed out of 5. Could you please help me with this code?

          class Solution{
              public static void main(String []argh){
                  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();
                      int first = a+b;
                      int sec = (2*b)+first;
                      System.out.print(first+" "+sec+" ");
                      int sum = sec;
                      for(int j=1;j<=n-2;j++){
                          
                          int s = ((2<<j)*b);      
                          sum = sum + s;
                          System.out.print(sum+" ");
                      } 
                      System.out.println(" ");
                  }
                  in.close();
              }
          }
          
    • + 0 comments

      Thanks #sharmatushar124 for ur Soln.

    • + 0 comments

      but what i the need of 't' here

    • + 0 comments

      silly me, i was calculating each term individually (3 nested for loops instead of 2) which would increase time complexity alot. Thanks xD

    • + 1 comment
        public static void main(String []argh){
              Scanner in = new Scanner(System.in);
              int num1, num2=0;
              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 k=0;k < n; k++){
                          num1 =a;
                          num2 += (Math.pow(2,k)*b);
                          System.out.print(num1 + num2 + " ");
      
                      }
              }
      
      
              in.close();
          }
      

      I have two question first why is this not working and why did he use (int) beofre Math.pow(). Thank You

      • + 0 comments

        Math.pow returns a double. To store it in an int variable you have to typecast it to int {putting (int) before the value} typecasting a double to an int removes all the digits after the decimal. 12.25 becomes 12 13.99 becomes 13 14.00 becomes 14

    • + 0 comments

      System.out.print(a + " "); System.out.println(""); can you please explain this and this

    • + 0 comments

      Thanks .It's working without any error.

    • + 0 comments

      why are we assigning the value to a?

    • + 0 comments

      Hi,

      What is the relevance of the below statement in the Program.Please explain.

      System.out.println("");

    • + 0 comments

      hey can you tell me what is this type of assignment that you used (int)Math.pow(2,j), thanks

    • + 0 comments

      bro...why are u giving int datatype near to math.pow,is it for a printing purpose like, the output will be in integer form so for that ur giving the int datatype or what?

    • + 0 comments

      import java.util.; import java.io.;

      class Java_Loops_II { public static void main(String []argh){ Scanner in = new Scanner(System.in);

          int a=0;
          int b=0;
          int n=0;
      
          int t = in.nextInt();
          for(int i=0;i<t;i++ ) {
      
            a = in.nextInt();
            b = in.nextInt();
            n = in.nextInt();
      
           for(int x=0;x<n;x++) {
               int s = a;
              for(int j=0;j<=x;j++) {
      
                  s =s+ (int) Math.pow(2,j)*b;
      
              }
      
                  System.out.printf(s +" ");
          }
          }
      }
      

      }

    • + 0 comments

      i Cannot understand whats the use of ' t' over there.

    • + 0 comments

      if we dont put System.out.println(""); line why the ouput is not comming correct.?

    • + 0 comments

      What is the System.out.println(""); line for?

    • + 1 comment
      [deleted]
    • + 3 comments

      Here are the Easiest way Without Using any in-build function

      import java.util.Scanner;

      class Solution {

      public static void main(String[] args) {
          Scanner sc = new Scanner(System.in);
          int time = sc.nextInt();
          int e = 1;
          for (int i = 0; i < time; i++) {
              int a = sc.nextInt(), b = sc.nextInt(), n = sc.nextInt();
              for (int j = 0; j < n; j++) {
                  a = a + b * e;
                  e *= 2;
                  System.out.print(a + " ");
              }
              e = 1;
              System.out.println();
          }
          sc.close();
      }
      

      }

      • + 0 comments

        e *= 2;

        what is was missing, supherb answer friend.

        thanks

      • + 1 comment

        i understood everything but whats the use of "time" variable in here could you please tell me about this

        • + 0 comments

          its just the number of queries. in default code 't' is given. bro changed it to time.

      • + 0 comments

        Thank you. i understood the logic very well. you are awesome. keep going.

    • + 1 comment

      Can U plz Explain why u use System.out.println("");

      • + 0 comments

        hmm this command outputs "space" or "whitespace" for our output

    • + 0 comments

      what is j and (int)Math.pow(2,j) for

    • + 0 comments

      this is the correct code

      import java.util.; import java.io.;

      class Solution{ public static void main(String []argh){ Scanner in = new Scanner(System.in); int t=in.nextInt(); for(int i=0;i

          }
      
      }
      

      }