codeforces 1490C

发布时间:2024年01月04日

又又又不是一道二分…思维+ s t l stl stl运用
题目链接

题目大意

给你一个正整数 x x x,请检查数字 x x x 是否可以表示为两个正整数 a , b a,b a,b的立方之和。

思路

我们用 s e t set set保存每一个可能的 a 3 a^3 a3,遍历找 b 3 b^3 b3,如果 b b b存在且为正整数,则输出对
本题只要求查找,我们可以用 u n o r d e r e d unordered unordered_ s e t set set,更快

ACcode

#include<bits/stdc++.h>

using namespace std;

using ll = long long;

const ll M = 1e12;

unordered_set<ll>mp;

void init()
{
    for (ll i = 1;i * i * i <= M;i++) {
        mp.insert(i * i * i);
    }
}
void solve()
{
    ll x;cin >> x;
    for (ll i = 1;i * i * i <= x;i++) {
        if (mp.count(x - i * i * i)) {
            cout << "YES" << '\n';
            return;
        }
    }
    cout << "NO" << '\n';
}

int main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int t;cin >> t;
    init();
    while (t--) {
        solve();
    }
    return 0;
}


文章来源:https://blog.csdn.net/weixin_70831807/article/details/135395555
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。