Tiny Wong the chef used to be a mathematics teacher in a senior high school. At that time, he always used to tell his students that when there is a square root of some number in one’s final result, it should be simplified by factoring out the largest square divisor of this number. For example, √ 12  = 2 √ 3 . Therefore, if an integer n has a square divisor, i.e. there is a number d > 1 such that d2 divides n, then the square root of n needs to be simplified.

Tiny himself should generate for homework some number whose square root needs simplifying. Since he used to major in Computer Science, he prefers random numbers. Therefore, he randomly chose a number n and decided to use the n-th smallest number whose square root needs simplifying in today’s homework.

Since the n-th such number is too large for him to deal with, Tiny Wong is lost in thought. Would you please help him?

Input

The first and only line of the input contains a single integer n.

Note: the number n is not fixed for each test case. Instead, it will be generated dynamically, so it may be different for each run of your program. For each test case, n is generated in the following way: we have two fixed numbers L and R; n will be chosen uniformly at random from all integers between L and R inclusive.

Note 2: Due to dynamically generated test cases, the problem is technically configured as interactive, thus reading until EOF will not work. Attempting to use any input method that expects EOF at the end will result in TLE verdict.

Output

Print a single line containing one integer — the n-th number whose square root needs simplifying.

Constraints

      1 ≤

n

      ≤ 10

18

Subtasks

Subtask #1 (6 points): 1 ≤ n ≤ 107

Subtask #2 (17 points): 1 ≤ n ≤ 1014

Subtask #3 (27 points): 1 ≤ n ≤ 1016

Subtask #4 (50 points): 1 ≤ n ≤ 1018

Example

Input:

4

Output:

12

Explanation

The first 4 numbers whose square roots need simplifying are 4, 8, 9 and 12.

 思路:见:https://blog.csdn.net/gjghfd/article/details/79137620 。

//求第N个含平方因子数时,可以把二分范围限制到如此,而筛不含平方因子数的时候,可以把上界限制到2N。
#include<bits/stdc++.h>
#define ll long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
const double pi=acos(-1.0);
map<int,int>M;
int mu[maxn],mu2[maxn],p[maxn>>],cnt; bool vis[maxn];
void init()
{
mu[]=; mu2[]=;
rep(i,,maxn-){
if(!vis[i]) p[++cnt]=i,mu[i]=-;
for(int j=,t;j<=cnt&&(t=p[j]*i)<maxn;j++){
mu[t]=-mu[i]; vis[t]=; //少做几次乘法
if(!(i%p[j])) {mu[t]=; break;}
}
}
rep(i,,maxn-) mu2[i]=mu2[i-]+(!mu[i]?:),mu[i]+=mu[i-];
}
int musum(int x)//莫比乌斯前缀和
{
if(x<maxn) return mu[x];
if(M.count(x))return M[x];
int res=;
for(int i=,j;i<=x;i=j+){
int k=x/i; j=x/k;
res-=musum(k)*(j-i+);
}
return M[x]=res;
}
ll nonfsum(ll x) //无平方因子前缀和
{
if(x<maxn) return mu2[x];
ll i=,res=,lst=,R,t;
for(;i*i*i<=x;i++) res+=(x/(i*i))*(mu[i]-lst),lst=mu[i];
for(res-=(t=x/(i*i))*lst;t;t--) res+=musum(sqrt(x/t));
return res;
}
int main(){
init();
ll N,ans,l,r,Mid;
scanf("%lld",&N);
l=N/(-/pi/pi),r=l+,l-=; //大致范围
l=max(l,1LL);
while(l<=r){
Mid=l+r>>;
if(Mid-nonfsum(Mid)>=N) ans=Mid,r=Mid-;
else l=Mid+;
}
printf("%lld\n",ans);
return ;
}

CodeChef - SQRGOOD:Simplify the Square Root (求第N个含平方因子数)的更多相关文章

  1. Project Euler 80:Square root digital expansion 平方根数字展开

    Square root digital expansion It is well known that if the square root of a natural number is not an ...

  2. Project Euler 57: Square root convergents

    五十七.平方根收敛(Square root convergents) 二的平方根可以表示为以下这个无穷连分数: \[ \sqrt 2 =1+ \frac 1 {2+ \frac 1 {2 +\frac ...

  3. Codeforces 715A. Plus and Square Root[数学构造]

    A. Plus and Square Root time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  4. Codeforces 612E - Square Root of Permutation

    E. Square Root of Permutation A permutation of length n is an array containing each integer from 1 t ...

  5. Codeforces 715A & 716C Plus and Square Root【数学规律】 (Codeforces Round #372 (Div. 2))

    C. Plus and Square Root time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  6. (Problem 57)Square root convergents

    It is possible to show that the square root of two can be expressed as an infinite continued fractio ...

  7. Square Root

    Square RootWhen the square root functional configuration is selected, a simplified CORDIC algorithm ...

  8. Codeforces Round #372 (Div. 1) A. Plus and Square Root 数学题

    A. Plus and Square Root 题目连接: http://codeforces.com/contest/715/problem/A Description ZS the Coder i ...

  9. Plus and Square Root

    ZS the Coder is playing a game. There is a number displayed on the screen and there are two buttons, ...

随机推荐

  1. python之网络socket编程

    一.网络协议 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构(互联网中处处是C/S架构):B/S架构也是C/S架构的一种,B/S是浏览器/服务器 C/S架构与socket的关系: ...

  2. request doesn't contain a multipart/form-data or multipart/mixed stream ……

    有文件控件"file"的表单,在提交的时候,直接使用了ajax提交,结果报了一堆错,原来这个东东要提交表单,还要用post方式,最后更改为: $("#saveForm&q ...

  3. git全局忽略

    今天在提交一个本地新建的build文件夹内的文件时,sourceTree始终无法找到该文件夹下的任何内容,但是项目中的.gitignore中并没有写/build/配置,于是开始了填坑之路! 首先从表象 ...

  4. Linux Shell编程 条件判断语法

    if条件判断语句 单分支 if 条件语句 语法格式: if [条件判断式];then 程序 fi 或者 if [条件判断式] then 程序 fi 在使用单分支 if 条件查询时需要注意几点: if ...

  5. Android开发之旅-获取地理位置的经度和纬度

    在Android应用程序中,可以使用LocationManager来获取移动设备所在的地理位置信息.看如下实例:新建android应用程序TestLocation. 1.activity_main.x ...

  6. 基于linux的ekho(余音)安装与开发

    Ekho(余音)是一个把文字转换成声音的软件.它目前支持粤语.普通话(国语).诏安客语和韩语(试验中),英文则通过Festival间接实现.它比eSpeak的设计更简易,但文件较大.由于使用了真人发声 ...

  7. 基于SSM的单点登陆03

    TbUser.java和TbUserExample.java,TbUserMapper.java,TbUserMapper.xml由mybatis框架生成. generatorConfig.xml & ...

  8. mysql的一些密码错误问题,并从windows登录linux主机的mysql

    mysqld_safe --skip-grant-tables& mysql -u root mysql 可以修改密码: mysql>update mysql.user set auth ...

  9. 关于 kinect 的开发

    1. 参考开发博客:http://www.cnblogs.com/yangecnu/p/Learning-KinectSDK.html

  10. 修改redhat默认显示语言为中文

    [delmore@localhost Desktop]$ su                               //切换到最高权限 Password:                    ...