问题 D: ADA Ⅱ型数
时间限制: 1 Sec 内存限制: 128 MB提交: 187 解决: 8
[ 提交][ 状态][ 讨论版]
题目描述
输入
少于4000行数据组成,每行一个整数n(0<n<2^31)。
输出
每个整数n对应一行输出,如果是ADA Ⅱ型数,则输出一行YES,否则输出一行NO。
样例输入
1 72
样例输出
NO YES
提示
#include<iostream>
#include<cmath>
using namespace std;
#define LL long long
LL max(LL a, LL b)
{
return a > b ? a : b;
}
int main()
{
LL n, temp,temp1, i, T;
while(cin>>n){
for( i=2;i<=1000;i++)
{
temp = i * i * i;
if(temp >= n || (n % temp))continue;
T = n / temp;
LL low=2,high=T;
while(low<=high)
{
LL mid=(low+high)/2;
temp1 = mid * mid;
if(temp1>=T)
high=mid - 1;
else
low=mid + 1;
}
if((low * low == T) && (low != i))
break;
}
if(i <= 1000)
cout << "YES" << endl;
else
cout<<"NO"<<endl;
}
return 0;
}