戴姆勒最近比较喜欢平方数,自称掌握所有关于平方数的题。
灿灿听到后就不高兴了,立马要考考他。
聪明的灿灿要用立方数来难倒他。
他给戴姆勒一个数字n,问他有从1到n有多少个完全立方数(1,8,27,,,,)?
戴姆勒瞬间傻眼了(好可怜),于是请求你来帮助他,你能帮助他吗?
请输出从1到n中立方数的个数;
3 1 2 8
1 1 2
如果使用了pow函数,请尝试加不同大小的小数修正来修正精度。
解题思路::采用二分的思想写的,这样就不会超时了
代码如下:
#include<stdio.h> long long num[1000000+10]; int main(){ int k=1; long long n; for(long long i=1;i<=1000000;i++){ num[k++]=i*i*i; } int t,flag; scanf("%d",&t); while(t--){ flag=-1; scanf("%lld",&n); int l=1; int r=k; while(l<=r){ int mid=(l+r)>>1; if(num[mid]==n){ flag=mid; break; } else if(num[mid]>n) r=mid-1; else l=mid+1; } if(flag!=-1) printf("%d\n",flag); else printf("%d\n",r); } return 0; }