UPC-2021个人训练赛第九场-K题-立方

题目描述

今年乐乐开始学编程了,上几天刚刚解决了一个平方数的问题,问题是这样的:随便告诉你一个不超过 1 个亿的正整数,请你算出不超过该数的所有立方数的个数。
但是,如果这个超过 1 亿,是一个 18 位正整数,或 28 位的正整数呢?
乐乐不会算,你会吗?

输入描述

只有一行且只有一个正整数:n

输出描述

只有一行且只有一个正整数:不超过 n 的立方数个数

Sample Input

100

Sample Out

4

题目大意

就是找小于n的立方数的个数其实也就是求数n的立方根取整。一开始没思路,查了一下发现double的数据范围还是很大的。
最后的答案最大也就10^9左右。

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#pragma GCC optimize("O3")
#pragma G++ optimize("O3")
#pragma comment(linker, "/STACK:102400000,102400000")
inline char nc()
{
     
	static char buf [100000],*p1=buf,*p2=buf;
	return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}
inline int read() 
{
     
	static char c=nc(); int x=0,f=1;
	for(;c>'9'||c<'0';c=nc()) if(c=='-') f=-1;
	for(;c<='9'&&c>='0';c=nc()) x=(x<<3)+(x<<1)+c-48;
	return x*f;
}
//inline int inc(int x,int v,int mod){x+=v;return x>=mod?x-mod:x;}//代替取模+
//inline int dec(int x,int v,int mod){x-=v;return x<0?x+mod:x;}//代替取模-
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> PII;
const ull MAXN=0x7f7f7f7f;
const int INF=0x3f3f3f3f;
const double PI=acos(-1.0);
int main()
{
     
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	double n;cin>>n;
	printf("%lld",(ll)pow(n,1.0/3));
	return 0;
} 

你可能感兴趣的:(upc训练,模拟)