結果
| 問題 |
No.1664 Unstable f(n)
|
| コンテスト | |
| ユーザー |
merlin
|
| 提出日時 | 2021-09-03 21:51:49 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 92 ms / 2,000 ms |
| コード長 | 1,875 bytes |
| コンパイル時間 | 3,248 ms |
| コンパイル使用メモリ | 77,660 KB |
| 実行使用メモリ | 49,288 KB |
| 最終ジャッジ日時 | 2024-12-15 12:35:31 |
| 合計ジャッジ時間 | 7,108 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 38 |
ソースコード
import java.io.*;
import java.math.BigInteger;
import java.util.*;
class Main
{
public static void main(String args[])throws Exception
{
BufferedReader bu=new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb=new StringBuilder();
long n=Long.parseLong(bu.readLine());
int i; long r=root(n),ans=Math.min(n,r+(n-r*r)+2);
//System.out.println(ans);
for(i=3;i<63;i++)
{
int j=2;
if(i<20)
{
long ti=power(j,i);
while(ti<=n)
{
ans=Math.min(ans,n-ti+i+j);
j++;
ti=power(j,i);
}
}
else
{
BigInteger ti=big_power(j,i),en=BigInteger.valueOf(n);
while(ti.compareTo(en)<=0)
{
ans=Math.min(ans,en.subtract(ti).longValue()+i+j);
j++;
ti=big_power(j,i);
}
}
//System.out.println(i+" "+j);
}
System.out.print(ans);
}
static long root(long n)
{
long l=1,r=(int)1e9,ans=l,mid;
while(l<=r)
{
mid=(l+r)>>1;
if(mid*mid<=n)
{
ans=mid;
l=mid+1;
}
else r=mid-1;
}
return ans;
}
static long power(long a,int b)
{
long res=1;
while(b!=0)
{
if(b%2==1) res=res*a;
b>>=1;
a=a*a;
}
return res;
}
static BigInteger big_power(int a,int b)
{
BigInteger res=new BigInteger("1");
while(b!=0)
{
res=res.multiply(res.valueOf(a));
b--;
}
return res;
}
}
merlin