진수 변환 (2진수,8진수,16진수......)
void getK(string& result, int num, int k)
{
if(num/k !=0)
getK(result, num/k, k);
result += to_string(num%k);
}
void getTwo(string& result, int num)
{
while(num !=0)
{
if(num & 1 == 1)
result = "1" + result;
else
result = "0" + result;
num>>=1;
}
}
소수 확인
bool isPrime(long long n)
{
if(n<2)
return false;
long long a = (long long) sqrt(n);
for(long long i=2; i<=a; ++i)
{
if(n%i == 0)
return false;
}
return true;
}
약수 구하기
void getDivisor(vector<int>& divisors, int num)
{
int root = sqrt(num);
for( int i=1; i<=root; ++i)
{
if(num%i == 0)
{
divisors.push_back(i);
if(num/i != i)
divisors.push_back(num/i);
}
}
}
최대 공약수 구하기
// a>=b 라고 했을때사용
int gcd(int a, int b)
{
return a % b == 0 ? b : gcd(b, a % b);
}
//여러 수의
vector<int> A;
int a = A[0];
for (int x : A)
a = gcd(max(a, x), min(a, x));
최소 공배수 구하기
a*b = 최대 공약수 * 최소 공배수
int lcm (int a, int b)
{
return (a*b) / gcd(a, b);
}
'유용한 기술' 카테고리의 다른 글
[배열] 안전한 순환 인덱스 표현 방법 (0) | 2023.08.13 |
---|---|
c++ algorithm - [find/search/binary_search/distance] (0) | 2023.02.17 |
String의 find/rfind 함수 (0) | 2023.02.15 |
STL 연속 메모리 컨테이너에서 특정 값 지우기 (0) | 2023.02.14 |
문자열 관련 (0) | 2023.02.09 |