[HackerRank/C++] Modified Kaprekar Numbers
2023. 2. 7. 07:51ㆍ코딩테스트 해커랭크/Algorithms -Easy
Modified Kaprekar Numbers라는 새로운 개념을 정의한다
n을 제곱한 후 n의 자릿수로 양분했을때, 그 두 수를 더한 수가 n이 된다면 그 수는 Modified Kaprekar Numbers가 된다
p 이상, q 이하 수에서 Modified Kaprekar Numbers인 수를 전부 출력하며, 존재하지 않는다면 INVALID RANGE를 출력한다
void kaprekarNumbers(int p, int q)
{
vector<long> result;
for (long i = p; i <= q; ++i)
{
string temp1 = to_string(i);
long ipow = i * i;
long count = pow(10, temp1.size());
if (i == ipow / count + ipow % count)
result.push_back(i);
}
if (result.empty())
cout << "INVALID RANGE";
else
for (auto i : result)
printf("%ld ", i);
}
모든 결과값을 담을 result vector를 선언한다
p부터 q까지의 값을 반복하며 해당 값의 제곱수와 자릿수를 구한다
양분할 선을 위해 pow 제곱 함수로 10의 temp1.size() 제곱만큼 구하며,
ipow / count + ipow % count가 i와 같다면 양분한 수를 합했을때 i와 같으므로 i를 result에 push_back 한다
이후 result.empty()라면 INVALID RANGE를 출력하고, 그게 아니라면 result 안의 모든 수를 출력한다
'코딩테스트 해커랭크 > Algorithms -Easy' 카테고리의 다른 글
| [HackerRank/C++] Minimum Distances (0) | 2023.02.07 |
|---|---|
| [HackerRank/C++] Beautiful Triplets (0) | 2023.02.07 |
| [HackerRank/C++] Taum and B'day (0) | 2023.02.07 |
| [HackerRank/C++] ACM ICPC Team (0) | 2023.02.07 |
| [HackerRank/C++] Equalize the Array (0) | 2023.02.07 |