代码编织梦想

Cubic Permutations

在这里插入图片描述


思路:
枚举: 枚举立方根, 同时记录这个立方数及排序后的立方数的出现次数, 若已经出现5次则返回其中最小的立方数. (注: 这样做法的正确性需要满足一个符合直觉的前提条件:当x>5时, 重排中恰好有x个立方数的最小立方数>重排中恰好有5个立方数的最小立方数,若不满足答案返回的立方数重排中有>5个立方数. 经结果验证这个条件满足…)


typedef long long ll;
ll solution() {
    int tar = 5;
    unordered_map<string, vector<ll>> cnt; // 排序后的立方数 -> { 立方数 }
    for (ll i = 1;; i++) {
        ll t = i * i * i;
        string s = to_string(t);
        sort(s.begin(), s.end());
        cnt[s].push_back(t);
        if (cnt[s].size() == tar)
            return cnt[s].front();
    }
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_40519680/article/details/131139508