CF1490C Sum of Cubes 【暴搜】
阿新 • • 發佈:2021-08-08
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; }