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 Rn 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. docker helloworld

    阿里云镜像: docker官网 docker官方安装文档 配置阿里云镜像后,重启服务,以及检测服务是否正确启动 docker version.info.--help linux帮助命令man ls 镜 ...

  2. $Java设计模式之——观察者模式(Observer)

    (一)观察者模式简介 1.定义:定义对象间一种一对多的依赖关系,一个对象状态发生改变时,所有依赖它的对象都会接到通知并作出相应的响应. 2.应用场景: (1)GUI系统 (2)订阅-发布系统 (3)事 ...

  3. java验证类ValidUtils

    ValidUtils.java package com.lyqc.utils; import org.apache.commons.lang.StringUtils; public class Val ...

  4. [Android]libpng error: Not a PNG file错误解决

    我在将以前在Eclipse中写的项目import到android studio中后,出现了 AAPT err(Facade for 157667509): libpng error: Not a PN ...

  5. VisualStudio卸载后无法再次安装的解决方法

    解决方法如下: 1.删除 Visual Studio 2013 安装目录文件夹 Visual Studio 12.0 2.win+R 输入 %UserProfile%\Appdata\Local\Mi ...

  6. Codeforces Round #395 (Div. 2) C

    题意 : 给出一颗树 每个点都有一个颜色 选一个点作为根节点 使它的子树各自纯色 我想到了缩点后check直径 当<=3的时候可能有解 12必定有解 3的时候需要check直径中点的组成点里是否 ...

  7. Python OS导入一个文件夹所有文件

    import os path = 'F:/save_file/seminarseries/' for root, dirs, files in os.walk(path): print(root) 这 ...

  8. nova shelve

    当一个虚机不需要使用的时候,可以将其 shelve 起来.该操作会创建该虚机的一个快照并传到 Glance 中,然后在 Hypervisor 上将该虚机删除,从而释放其资源. 其主要过程为: dest ...

  9. JavaScript 正则表达收集整理

    JavaScript 正则表达收集整理 //可为空 /^\s*$/ //密码验证,必须且只含有数字和字母,可以拥有英文符号,6-17位 /(?=.{,})(?=.*\d)(?=.*[a-z])[\x2 ...

  10. MVP实战心得—封装Retrofit2.0+RxAndroid+RxBus

    响应式编程框架,rxjava的扩展,很爽的链式编程 魅力在于对数据的处理,与线程切换的灵活性. 用来处理异步操作(Lambda表达式不会用.用Lambda表达式代码会更少,但不会的人会看不懂代码.不是 ...