You are given a positive integer n, please count how many positive integers k satisfy kk≤nkk≤n.
InputThere are no more than 50 test cases.
Each case only contains a positivse integer n in a line.
1≤n≤10^18
OutputFor each test case, output an integer indicates the number of positive integers k satisfy k^k ≤ n in a line.
Sample Input
1 4
Sample Output
1 2主要注意long最大为多少 2^63-1,先求出来,就知道15^15正好小于,16^16就超long的范围 代码:
import java.math.BigInteger; import java.util.Scanner; public class Main{ static long quick_pow(long a, long b){ long res = 1; while(b > 0){ if((b&1) == 1) res = res * a; a = a * a; b >>= 1; } return res; } public static void main(String[] args) { Scanner scan=new Scanner(System.in); // BigInteger a=new BigInteger("2"); // System.out.println(a.pow(64)); // for(int i=1;i<=20;i++) // System.out.println(quick_pow(i,i)); while(scan.hasNext()){ int cnt=15; long n=scan.nextLong(); for(long i=15;i>=1;i--){ if(quick_pow(i,i)>n) cnt--; else break; } System.out.println(cnt); } } }
原文地址:https://www.cnblogs.com/qdu-lkc/p/12258893.html
时间: 2024-11-05 19:42:33