// http://acm.hdu.edu.cn/showproblem.php?pid=2551 #include<stdio.h> int main() { __int64 a[1001]={0},sum=0,x,i; int t; for(i=1;i<=1000;i++) { sum+=i*i*i; a[i]=sum; } while(scanf("%d",&t)!=EOF) { while(t--) { scanf("%I64d",&x); for(i=1;1;i++) if(a[i-1]<=x && a[i]>=x) break; printf("%I64d\n",i); } } return 0; } // 这下面一种可能更好,只是用到了那个立方和的公式,而且不要很大的空间 #include<stdio.h> int main() { __int64 x,i; int t; while(scanf("%d",&t)!=EOF) { while(t--) { scanf("%I64d",&x); for(i=1;1;i++) if(i*i*(i+1)*(i+1)/4>=x) { printf("%I64d\n",i); break; } } } return 0; }