hdu 6182A Math Problem(快速幂)
Posted qdu-lkc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 6182A Math Problem(快速幂)相关的知识,希望对你有一定的参考价值。
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); } } }
以上是关于hdu 6182A Math Problem(快速幂)的主要内容,如果未能解决你的问题,请参考以下文章
HDU 1757 A Simple Math Problem (矩阵快速幂)
HDU 1757 A Simple Math Problem(矩阵快速幂模板)
HDU - 1757 A Simple Math Problem (矩阵快速幂)