CF1490C Sum of Cubes 【暴搜】

时间:2021-08-08
本文章向大家介绍CF1490C Sum of Cubes 【暴搜】,主要包括CF1490C Sum of Cubes 【暴搜】使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Codeforces 1490C -> Click Here

题意

求数 \(x\) 是否满足 \(a^3+b^3=x\)\(a\),\(b\)为任意两个正整数

思路

直接暴力搜索,先把 \(1\)\(10000\) 的立方 \(a^3\)​ 存起来再遍历此数组,求出\(x\)\(a^3\) 的差,判断差是否为某个数的立方

(求某个数的三次方可用 <cmath> 中的 cbrt 函数,算是触及到我的知识盲区了,视力问题,没看见要开long long直接将我卡飞

code

#include<iostream>
#include<cmath>
#define REP(i,a,b) for(ll i=(a);i<=(b);i++)
#define FOR(i,a,b) for(ll i=(a);i<(b);i++)
using namespace std;
typedef long long ll;
ll n;
ll A[10000],cnt=0;
bool pan(ll x){
	ll a=cbrt(x);
	if(a*a*a==x) return true;
	return false;
}
void solve(){
	cin>>n;
	for(ll i=1;i<=n;i++){
		ll x=A[i];
		if(n<=x) break;//如果a比x还大,那就直接break掉
		if(pan(n-x)){
			cout<<"YES\n";
			return;
		}
	}
	cout<<"NO"<<endl;
}
void init(){
	REP(i,1,10000) A[++cnt]=i*i*i;//把a的三次方存起来
}
int main(){
	init();
	int T;
	cin>>T;
	while(T--)
	solve();
	return 0;
}

原文地址:https://www.cnblogs.com/cookiecheetah/p/15115331.html