您的位置:首页 > 其它

ZZULIOJ 1798: 戴姆勒的求助【数学】

2015-12-13 12:17 337 查看


1798: 戴姆勒的求助

Time Limit: 1 Sec Memory Limit:
128 MB

Submit: 530 Solved: 70

SubmitStatusWeb
Board

Description

戴姆勒最近比较喜欢平方数,自称掌握所有关于平方数的题。
灿灿听到后就不高兴了,立马要考考他。
聪明的灿灿要用立方数来难倒他。
他给戴姆勒一个数字n,问他有从1到n有多少个完全立方数(1,8,27,,,,)?
戴姆勒瞬间傻眼了(好可怜),于是请求你来帮助他,你能帮助他吗?

Input

输入第一行为一个整数T(0<T<=1000),表示有T组测试实例。
每组测试实例有一个数字n(1<=n<=1018)。

Output

请输出从1到n中立方数的个数;

Sample Input

3
1
2
8

Sample Output

1
1
2

HINT

如果使用了pow函数,请尝试加不同大小的小数修正来修正精度。

解题思路

因为每个立方数都是由(1,2,3.....)整数立方得来所以,只要先求出这个数的3次平方根,取整然后加1,和n比较就能得到答案,求出的数正好包含前面所有的能成为立方数的个数。

#include <iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define LL long long
using namespace std;

int main()
{
int t;
LL n,sum;
scanf("%d",&t);
while(t--)
{
scanf("%lld",&n);
sum=pow(n,1.0/3);
sum+=1;
if(sum*sum*sum>n)
sum--;
printf("%lld\n",sum);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: