본문으로 바로가기

[풀이 - Bigger is Greater]

더보기
string biggerIsGreater(string w)
{
    string result = "";
    // make char to int
    vector<int> v(w.size(), 0);
    for(int i = 0; i < w.size(); ++i)
        v[i] = w[i];
    // get next permutaion
    if(next_permutation(v.begin(), v.end()))
    {
        for(int i = 0; i < w.size(); ++i)
            result += (char)v[i];
    }
    else
        result = "no answer";
    //
    return result;
}

 

[풀이 - Modified Kaprekar Numbers]

더보기
bool IsKaprekar(long i) 
{
    long n = i;
    int d = to_string(i).size();
    //
    i = pow(i, 2);
    //
    string value = to_string(i);
    int size = value.length();
    string l = value.substr(0, size - d);
    string r = value.substr(size - d, size);
    //
    if(l == "")
        l += "0";
    //
    long sum = stoi(l) + stoi(r);
    //
    return (sum == n);
}
// Complete the kaprekarNumbers function below.
void kaprekarNumbers(int p, int q)
{
    string numbers = "";
    //
    for(int i = p; i <= q; ++i)
    {
        if(IsKaprekar(i) == true)
            numbers += (to_string(i) + " ");
    }

    if(numbers == "")
        cout << "INVALID RANGE" << endl;
    else
    {
        numbers.pop_back();
        cout << numbers << endl;
    }
}