普及1两个立方体TLE0分怎么办?

9. 两个立方体

XJOI - 题目ID:8588必做题100分

最新提交:

Time Limit Exceeded

0 分

历史最高:

Time Limit Exceeded

0 分

时间限制: 1000ms

空间限制: 524288kB

题目描述

时间:1s 空间:256M

题目描述

大哈和小哈在玩游戏,大哈给出一个x,他问小哈能否有两个边长为整数的立方体的体积之和恰好等于x。小哈成天只会阿巴阿巴,他只能把希望寄托在大佬你的身上了。

输入格式

第一行输入一个t,代表有t组输入

第二行有一个x,代表大哈的询问

输出格式

每次询问给出一个“YES”或“NO”的回答

样例输入

7 1 2 4 34 35 16 703657519796

样例输出

NO YES NO NO YES YES YES

约定

1 <=� <=100 1 <=t <=100

1 <=� <=1012 1 <=x <=1012

代码:

#include<iostream>
#include<cmath>
using namespace std;
int main(){
	int t;
	cin>>t;
	bool f;
	long long x;
	while(t--){
		cin>>x;
		f=false;
		for(int i=1;i*i*i<x;i++){
			long long y=x-i*i*i;
			long long l=1,r=y;
			while(l<r){
				long long mid=(l+r+1)/2;
				if(mid*mid*mid>y){
					r=mid-1;
				}
				else if(mid*mid*mid<y){
					l=mid;
				}
				else{
					l=mid;
					break;
				}
			}
			if(l*l*l==y){
				cout<<"Yes"<<endl;
				f=1;
				break;
			}
		}
		if(!f){
			cout<<"No"<<endl;
		}
	}
	return 0;
}
3 个赞

这不是二分吗

3 个赞

对呀他的确是二分

4 个赞

image
l=mid+1

4 个赞

OK,AC了

3 个赞