Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 313 Accepted Submission(s): 184
1 //2017-09-17 2 #include <cstdio> 3 #include <cstring> 4 #include <iostream> 5 #include <algorithm> 6 #define ll long long 7 8 using namespace std; 9 10 const int N = 600000; 11 12 ll cubic[N+100]; 13 ll diff[N+100]; 14 15 bool check(ll p){ 16 int pos = lower_bound(diff+1, diff+N, p) - diff; 17 if(diff[pos] == p) 18 return true; 19 return false; 20 } 21 22 int main() 23 { 24 int T; 25 scanf("%d", &T); 26 ll p; 27 for(ll i = 1; i <= N; i++) 28 cubic[i] = i*i*i; 29 for(int i = 1; i <= N; i++) 30 diff[i] = cubic[i+1]-cubic[i]; 31 while(T--){ 32 scanf("%lld", &p); 33 if(check(p)) 34 printf("YES\n"); 35 else printf("NO\n"); 36 } 37 38 return 0; 39 }
原文:http://www.cnblogs.com/Penn000/p/7542646.html