JXNVCE ALGO-LOG YouJin Jung

CHECK PALINDROME

palindrome 은 역순으로 읽었을 때도 똑같은 의미를 지닌다는 것이다. 영단어로 예를들면 eye, deed 등의 단어가 있을거다!

#include<iostream>
using namespace std;

bool isKthBitSet(unsigned int x, unsigned int k) {
    return (x & (1 << (k - 1))) ? true : false;
}
 
bool isPalindrome(unsigned int x) {
    int l = 1;
    int r = sizeof(unsigned int) * 8;
    while (l < r) {
        if (isKthBitSet(x, l) != isKthBitSet(x, r))
            return false;
        l++; r--;
    }
    return true;
}

int main() {
    unsigned int x = 1 << 15 + 1 << 16;
    cout << isPalindrome(x) << endl;
    x = 1 << 31 + 1;
    cout << isPalindrome(x) << endl;
    return 0;
}

MULTIPLY WITH 7

7=2^3-1 을 활용한 간단한 비트 연산 문제

# include<bits/stdc++.h>
using namespace std;

long multiplyBySeven(long n){
    return (n<<3)-n;
}
   
int main() {
    long n = 4; 
    cout<<multiplyBySeven(n); 
    return 0;
}

CHECK FOR POWER OF 4

  1. 직관적인 방식
bool isPowerOfFour(unsigned int n) {
    int count = 0;
    if ( n && !(n&(n-1)) ) {
        while(n > 1) {
            n >>= 1;
            count += 1;
        }
        return (count%2 == 0)? 1 :0;
    }
    return 0;
}
  1. bit 특성 이용 접근
#include<bits/stdc++.h>
using namespace std;
 
bool isPowerOfFour(unsigned int n) {
    return n !=0 && ((n&(n-1)) == 0) && !(n & 0xAAAAAAAA);
}
 
int main() {
    int test = 64;
    if (isPowerOfFour(test))
        cout << test << " is a power of 4" ;
    else
        cout << test << " is not a power of 4";
}

EULERIAN-NUMBER

``` cpp #include <bits/stdc++.h> using namespace std;

int eulerian(int n, int m) { int dp[n + 1][m + 1]; memset(dp, 0, sizeof(dp));

for (int i = 1; i <= n; i++) {
    for (int j = 0; j <= m; j++) {
        if (i > j) {
            if (j == 0)
                dp[i][j] = 1;
            else
                dp[i][j] = ((i - j) * dp[i - 1][j - 1]) + ((j + 1) * dp[i - 1][j]);
        }
    }
}
 
return dp[n][m]; }

int main() { int n = 5, m = 2; cout « eulerian(n, m) « endl; return 0; }

GFG-LOBB-NUMBER

Lobb number using DP

#include <bits/stdc++.h>
#define MAXN 109
using namespace std;
 
int binomialCoeff(int n, int k) {
    int C[n + 1][k + 1];
 
    for (int i = 0; i <= n; i++) {
        for (int j = 0; j <= min(i, k); j++) {
            if (j == 0 || j == i)
                C[i][j] = 1;

            else
                C[i][j] = C[i - 1][j - 1] + C[i - 1][j];
        }
    }
 
    return C[n][k];
}
 
int lobb(int n, int m) {
    return ((2 * m + 1) * binomialCoeff(2 * n, m + n)) / (m + n + 1);
}
 
int main() {
    int n = 5, m = 3;
    cout << lobb(n, m) << endl;
    return 0;
}