【发布时间】:2015-08-22 16:15:51
【问题描述】:
我正在尝试编写一个程序来检查一个数字 N 是否可以表示为两个立方体的总和,即 N = a^3 + b^3
这是我的代码,复杂度为 O(n):
#include <iostream>
#include<math.h>
#define ll unsigned long long
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
bool flag=false;
ll t,N;
cin>>t;
while(t--)
{
cin>>N;
flag=false;
for(int i=1; i<=(ll)cbrtl(N/2); i++)
{
if(!(cbrtl(N-i*i*i)-(ll)cbrtl(N-i*i*i))) {flag=true; break;}
}
if(flag) cout<<"Yes\n"; else cout<<"No\n";
}
return 0;
}
由于code的时间限制是2s,这个程序是给TLE的吗?谁能建议一个更快的方法
【问题讨论】:
-
这个问题是从某位网上评委那里提炼出来的吗?
-
是的...一周前结束的竞赛问题
-
分享学分,因为这个问题不是你的创造。