上午
T1 立方数
题目描述
LYK定义了一个数叫“立方数”,若一个数可以被写作是一个正整数的3次方,则这个数就是立方数,例如1,8,27就是最小的3个立方数。
现在给定一个数P,LYK想要知道这个数是不是立方数。
当然你有可能随机输出一些莫名其妙的东西来骗分,因此LYK有T次询问~
输入输出格式
输入格式:
第一行一个数T,表示有T组数据。
接下来T行,每行一个数P。
输出格式:
输出T行,对于每个数如果是立方数,输出“YES”,否则输出“NO”。
输入输出样例
说明
对于30%的数据p<=100。
对于60%的数据p<=10^6。
对于100%的数据p<=10^18,T<=100。
题解:枚举10^6/二分。
代码:二分0ms,枚举540ms
#include<iostream> #include<cstdio> #define LL long long using namespace std; int t; LL x; LL read(){ LL x=0,f=1;char ch=getchar(); for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-1; for(;isdigit(ch);ch=getchar())x=x*10+ch-'0'; } bool check(LL x){ for(int i=1;;i++){ if(1LL*i*i*i==x)return true; if(1LL*i*i*i>x)return false; } } int main(){ scanf("%d",&t); while(t--){ scanf("%lld",&x); if(check(x))printf("YES\n"); else printf("NO\n"); } return 0; }