L5. Power Exponentiation | Maths Playlist
Вставка
- Опубліковано 16 бер 2024
- Notes/Codes/Problem links under day 8 of A2Z DSA Course: takeuforward.org/strivers-a2z...
Entire playlist: • Maths Playlist | Langu...
Follow us on our other social media handles: linktr.ee/takeuforward
This man is the top person in youtube to provide high quality content
for overflow scenario's just use an unsigned right shift n>>>=1 is equal to n/2. why unsigned not signed right shift let say in case of number like -2147483648 if u take an abs it will -2147483648 same number again and then if you divide by 2 or signed right shift this number will be going forever negative, reason in signed right shift it replaces left vacated bits with 1 eventually you number will become -1111111....11111 in form of bits and forever loop, in this in case of unsigned right shift >>> it will fill vacated left values to zero so it will never overflow and eventually become 0 all the other code keep same make n = n/2 to n>>>=1 you will cover all cases :)
I'm improving my logical thinking for problem solving by your teaching only.
UNDERSTOOD....Thank You So Much for this wonderful video................🙏🏻🙏🏻🙏🏻🙏🏻
Brother please next string playlist if possible 🙂
please also complete String Playlist.(This topic is more import for third college placement and it is more demanding topic for all guys.
For LEETCODE : (Covering all the Corner Cases)
class Solution {
public double myPow(double x, int n) {
double ans = 1;
double oriNum = n;
if(x == 0 || x == 1) return x;
if(n < 0){
x = 1/x;
n = -(n+1); //for Integer.MIN_VALUE
ans = ans * x;
}
while(n > 0) {
if(n % 2 == 1) {
ans = ans * x;
n = n-1;
}
else {
n = n/2;
x = x * x;
}
}
return ans;
}
}
int a,x; // a is base and x is power
cin>>a>>x;
int ans =1;
while(x>0){
if(x&1)ans = ans*a;
a = a*a;
x>>=1;
}
cout
class Solution {
public:
double myPow(double x, int n) {
int pow = abs(n);
double ans = 1;
while(pow > 0)
{
if(pow %2 == 0)
{
x=x*x;
pow /=2;
}
else
{
ans *=x;
pow = pow -1;
}
}
if(n < 0)
ans = 1/ans;
return ans;
}
};
Understood ❤
Thank_You✨
Here is the Code for the negative power : public static double pow(int x, int n) {
// Handle negative exponent
if (n < 0) {
// Calculate positive exponent result
return 1.0 / pow(x, -n);
}
int result = 1;
while (n > 0) {
if (n % 2 == 1) {
result *= x;
n--;
} else {
n /= 2;
x *= x;
}
}
return result;
}
x and result should be double too
I have a small doubt, why does the last approach work, if someone can provide the intitution it will be super helpful.
understood
Can you discuss about corner case
Understood
@striver Code will not work for negative power! BTW Thanks sir for the video❤
❤❤
// for posititve/negative powers
public static double exponent(int x, int n) {
double ans = 1;
int m = n;
if(n 0) {
if (n % 2 == 1) {
ans = ans * x;
n = n - 1;
} else {
n = n / 2;
x = x * x;
}
}
if(m
bro isme int overflow hoga if we multiply n*-1
@@ryuu5768 That is for converting the power to positive.
@@hritikminmuley1397 hn but wo out of int limit hojyega for a test case for n=-214........ Something
Bhai wahi if negative interger h to -2147 ..... P positive krne p int flow hora
then store it in a long
US
Code for Negative powers is not running.please help
yes because our while will never run because n is negative so our code will simply return 1/ ans (which is 1);
@@AkshitChaudhary-vx8iw how can we fix it?
@@deepalikumari5319 return 1 / pow(x, -n)
Bhai code kaha hai striver A - Z sheet mein lec 4 mein toh nhi dikh raha please batado
Here is the Code for the negative power : public static double pow(int x, int n) {
// Handle negative exponent
if (n < 0) {
// Calculate positive exponent result
return 1.0 / pow(x, -n);
}
int result = 1;
while (n > 0) {
if (n % 2 == 1) {
result *= x;
n--;
} else {
n /= 2;
x *= x;
}
}
return result;
}
understood
understood
understood
understood