精华内容
下载资源
问答
  • Java实现N的N次幂

    万次阅读 多人点赞 2019-07-20 18:08:48
    如果x的x次幂结果为10(参见【图1.png】),你能计算出x的近似值吗? 显然,这个值是介于2和3之间的一个数字。 请把x的值计算到小数后6位(四舍五入),并填写这个小数值。 注意:只填写一个小数,不要写任何多余的...

    如果x的x次幂结果为10(参见【图1.png】),你能计算出x的近似值吗?

    显然,这个值是介于2和3之间的一个数字。

    请把x的值计算到小数后6位(四舍五入),并填写这个小数值。

    注意:只填写一个小数,不要写任何多余的符号或说明。

    答案:2.506184

    在这里插入图片描述

    public class Main {
        
        public static double min = 10;
        
        public static void main(String[] args) {
            double result = 0;
            for(double i = 2.5;i <= 2.6;i = i + 0.00000001) {
                double r = Math.abs(10 - Math.pow(i, i));
                if(min > r) {
                    min = r;
                    result = i;
                }
            }
            System.out.printf("%.6f", result);
            System.out.println("\n"+result);
            System.out.println(Math.pow(result, result));
        }
        
    }
    
    展开全文
  • 2n次幂Java实现

    万次阅读 2017-05-24 08:57:52
    首先扯点别的:今天上海下雨了,...今天总结一些2n次幂的算法实现,只讨论n>=0的情况。 如果n比较小的话,可以这样实现。 private static int calculate(int n) { if (n == 0) return 1; return 2 * calculate

    首先扯点别的:今天上海下雨了,不大,空气很清新,温度也很舒适,今晚可以睡个好觉了。
    今天总结一些2的n次幂的算法实现,只讨论n>=0的情况。

    如果n比较小的话,可以这样实现。

    private static int calculate(int n) {
        if (n == 0)
            return 1;
        return 2 * calculate(n - 1);
    }
    

    但是当n很大的时候,结果会超出int类型(能表示的最大的数为 2 31 − 1 {2^{31}}-1 2311)或者long类型所能表示的最大的数( 2 63 − 1 {2^{63}}-1 2631)的时候,就会出问题,接下来就是讲述在n很大的情况下如何计算2的n次幂。

    核心思想就是使用一个字符串str来表示一个整数进行计算和存储。

    起始条件是: 2 0 {2^{0}} 20=1,我们用字符串表示 str=“1”。

    当n大于0的时候,我们需要从str=“1”开始,将字符串所代表的整出乘以2,总共需要乘以n次。
    举个例子,计算 2 3 {2^{3}} 23,str=“1”,我们总共需要乘以3次。

    1*2*2*2=8
    

    计算 2 4 {2^{4}} 24,str=“1”,我们总共需要乘以4次。

    1*2*2*2*2=16
    

    然后我们需要明确的就是如何将字符串表示的整数和2相乘,并将结果转化为字符串。细节就不说了,看下面的具体代码吧。

    完整的算法如下

       public static void main(String args[]) {
            String result = expString(2, 6);
            System.out.println(result);
        }
    
        /**
         * @param bottom 底数
         * @param var    指数
         * @return
         */
        private static String expString(Integer bottom, Integer var) {
            int i = 0;
            String str = "1";
            while (i < var) {
                str = multiString(bottom, str);
                i++;
            }
            return str;
        }
    
        /**
         * @param bottom 底数
         * @param str    指数
         * @return
         */
        private static String multiString(Integer bottom, String str) {
            char[] c = str.toCharArray();
            //结果可能和原数组一样长或者比原数组长度长1, 2的3次幂是8,2的4次幂就是16了
            char[] result = new char[c.length + 1];
            //temp用来表示是否有进位
            int temp = 0;
            for (int i = c.length - 1; i >= 0; i--) {//从后向前遍历
                //48 是 0对应的ASCII码
                int j = (int) c[i] - 48;
                int all = j * bottom;
                //为什么是i+1呢?,因为最后可能会有进位
                result[i + 1] = ((char) ((all % 10 + temp) % 10 + 48));
                temp = (all + temp) / 10;
            }
            if (temp != 0) {
                //最后如果有进位
                result[0] = (char) (temp + 48);
            }
            //去掉不需要的0
            return String.valueOf(result).replaceAll("\u0000", "");
        }
    

    结尾:感觉自己叙述的不是很清楚,如果感觉有疑问,可以把代码拷贝下来,自己debug一下,一步一步分析理解。

    展开全文
  • Java】位运算判断2N次幂

    千次阅读 2020-02-10 17:25:43
    本文先给出了结论,接下来分析并证明了利用位运算判断2N次幂的合理性,欢迎食用。

    思考

    如何判断一个数是不是2的N次幂?
    难道要一直除下去?一直乘过去?还是打表?
    我们就不能简单一些处理这个问题吗?
    那就有了这篇博客的内容——位运算判断一个数是不是2的N次幂……

    核心算法

    其实就是:(num & num-1) == 0

    &表示按位取且,运算规律是(在二进制的情况下):

    • 1 & 1 = 1
    • 1 & 0 = 0
    • 0 & 1 = 0
    • 0 & 0 = 0

    Java编程实现

    private static boolean isPowOfTwo(int num) {
        return (num & num-1) == 0;
    }
    

    算法正确性

    我们把一个十进制的数当成二进制来看。

    Q:2的N次幂的二进制有什么特点?

    先枚举一些例子:
    1 → 00000001
    2 → 00000010
    4 → 00000100
    8 → 00001000
    ……

    A:二进制表示的情况下只有一位(非最高位)是1

    我们不加以形式化地证明一下:

    假设不是2的N次幂,这个数起码就要比2大(我们只考虑正整数),至少也是00000011(8位二进制表示),那么非0的就不止1个,至少2位非0。
    那么对于num-1,一定不会去到最高位非0位去“借位”,所以最高非0位一定不変,还是1。
    既然我们按位取且,所以num & num-1(注意位运算的优先级弱于加减,可以这么写而不加括号)至少会在num原先的最高非0位保持1,(因为1&1=1),这样的结果就不可能是0(因为0是00000000)。

    所以我们就能发现,只有在num是2n(0≤n, n∈N+)的情况下,(num & num-1) == 0为真。

    完整代码

    import java.util.Scanner;
    
    public class JudgePowOfTwo {
    
        private static boolean isPowOfTwo(int num) {
            return (num & num-1) == 0;
        }
    
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int num = scanner.nextInt();
            scanner.close();
            System.out.println(isPowOfTwo(num));
        }
        
    }
    

    2021.3.24更新
    如果是考虑到0的话,应该这么写: ( ( n u m ! = 0 ) & & ( n u m & n u m − 1 ) ) = = 0 ((num!=0)\&\&(num\&num-1))==0 ((num!=0)&&(num&num1))==0

    展开全文
  • public static void main(String[] args) { ...public static BigDecimal pow(int num, int n) { BigDecimal result = new BigDecimal(num); if (n == 0) { return new BigDecimal(1); } int m = Math.abs(n.
    public static void main(String[] args) {
        BigDecimal result = pow(7, 77777);
    }
    
    public static BigDecimal pow(int num, int n) {
        BigDecimal result = new BigDecimal(num);
        if (n == 0) {
            return new BigDecimal(1);
        }
        int m = Math.abs(n);
        for (int i = 0; i < m - 1; i++) {
            result = result.multiply(new BigDecimal(num));
            System.out.println(num+"的"+(i+2)+"次方为:"+result.toString());
        }
    
        for (int i = 0; i < m - 1; i++) {
            result = result.divide(new BigDecimal(num));
        }
        System.out.println("回退结果为:"+result.toString());
        return n > 0 ? result : new BigDecimal(1).divide(result);
    
    }

    因为Math.pow() 方法返回值为double,某些情况结果较大的时候double会存储不下。

    可以使用 BigDecimal类进行计算,其内部使用 BigInteger 范围更大

    展开全文
  • Java判断一个数是否是2n次幂

    千次阅读 2020-04-01 00:15:05
    二进制中n一旦是2幂次方(只出现一个1),必为10,100,1000,10000,100000,…形式; 并且n-1为01,011,0111,0111,01111形式。 方法:n,n-1两个数按位与&等于零,则为2幂次方 class Solution { public ...
  • 计算 x 的 n 次幂函数
  • 输入: 2.00000, 10 输出: 1024.00000 示例2: 输入: 2.10000, 3 输出: 9.26100 示例3: 输入: 2.00000, -2 输出: 0.25000 解释: 2-2 = 1/22 = 1/4 = 0.25 来源:力扣(LeetCode)链接:...
  • Java中的运算(函数):如何编写一个数的n次方? ** java.lang.Math类中的pow方法。 方法声明:Math.pow(double m, double n) 参数说明:m为要求方的数,n为次方数。注意求出的值类型为double。如果需用到声明的...
  • 计算x的n次幂函数。 -100.0 < x < 100.0 n 是 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1] 。 解析: 负数的边界 -2^31 , 直接转正数会越界。 正数边界2^31 − 1,负数转正2^31,越界。 所以将n的...
  • 2幂次方表示 描述 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HjnOLAKd-1583034303750)(C:\Users\HUAWEI\AppData\Roaming\Typora\typora-user-images\image-20200301114236455.png)]...
  • 一个数是否是2幂次方,比较常用的是递归和移位运算进行判断。递归算法的思想很简单,就是不断的模上2去判断。  如果一个数是2,那么它的二进制表示中就只有一位1,例如:10000,1000,100等等。所以如果对...
  • 比如,2的9 则 1 * 2 = 22 * 2 = 4;4 * 4 =16;16 * 16=。。。; 指数:1-----------2-----------4------------8--------------- 对应代码: 能翻倍的情况下 //能翻 while((ex<<1)<n) { //翻 ...
  • 为什么hashmap的容量必须是2n次幂

    千次阅读 2020-11-18 18:31:06
    要明白为什么是2n次幂,这要从hashmap的hashCode方式说起,hashmap的容量期望就是用来均匀散列存放map中的元素。hashmap根据hash值把元素放到hashmap内部数组的一个位置上。 1、为什么hashmap的容量必须是2n次...
  • 因为所有数在内存中都是以二进制存放,故直接对数的二进制位进行操作非常快,比如乘法、除2操作:通过左右移二进制位即可,无需将数转为十进制后再通过加法完成(乘法本质是由加法实现的) Java位运算的简单实现: /...
  • java计算X的n次方问题解决方案

    千次阅读 2017-05-11 11:19:30
    欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: ...1.最简单也是效率最低的 for循环N次x的相乘 再次不做任何的解释 2.用递归来减半循环
  • 律运算】设a为一给定实数,直接根据律运算的数学定义计算an (n为自然数)的方法属于蛮力算法,此时需要对a执行(n−1)基本乘法运算,故蛮力算法的计算时间复杂度为O(n)。请重新设计一个算法,要求该算法的计算...
  • java 算法之 递归求2次幂

    千次阅读 2018-03-24 14:52:26
    // 2次幂 public static int check(int num) { if (num % 2 == 0) { int count = num / 2; if (count &gt; 0 &amp;&amp; count != 1) { count = check(count); } re...
  • )实现2n次方计算。 输入描述: 多组输入,每一行输入整数n(0 <= n < 31)。 输出描述: 针对每组输入输出对应的2n次方的结果。 示例1 输入 2 10 输出 4 1024 public static void main(String[] args)...
  • 如何简洁快速的判断一个正整数是否是2的整数次幂,以及如果是整数次幂,是多少次幂?方法非常简单。 话不多说,先上代码; public static int isTimesTwo(int n) throws Exception { if(!(n > 0 && ...
  • Java程序练习-计算2N次方

    万次阅读 2011-10-10 12:20:56
    计算2N次方 时间限制: 1000ms内存限制: 65536kB 描述 任意给定一个正整数N(N 输入 输入只有一个正整数N。 输出 输出2N次方的值。 样例输入 5 样例输出 32 参考代码 import java.util.*; public
  • a = 5, 返回 8; a = 13, 返回 16; a = 1021, 返回 1024;...n 代表把数字m在无溢出的前提下乘以2n次方2.右移  右移运算符“>>” - 使指定值的所有位都右移规定的次数。 右移m>&g
  • 一个偶然的小经验快速计算2n次幂

    千次阅读 2017-06-02 16:13:15
    在很多面试的时候都会出现一个数多少次方 怎样最快的计算出来,而这个数大多是2n次幂 比如8的15次方 第一种:很陋的方法 for循环 int i=1; for(int i=0;i i=i*8; } 第二种 Math.pow(8, 15); 算最...
  • public class 高效n次幂 { public static void main(String[] args) { int a =pom(2,10); System.out.println(a); } private static int pom(int a, int n) { if (n == 0) return 1; int res = a;
  • 实现pow(x, n),即计算 x 的 n 次幂函数(即,xn)。 示例 1: 输入:x = 2.00000, n = 10 输出:1024.00000 示例 2: 输入:x = 2.10000, n = 3 输出:9.26100 示例 3: 输入:x = 2.00000, n = -2 ...
  • 1 package study;... 2 import java.util.*; 3 import java.math.*; 4 5 public class study { 6 public static void main(String[] args){ 7 System.out.println("输入一个n"); 8 S...
  • 接着上一篇博客,上一篇博客说明了HashMap的初始容量都是2n次幂的形式存在的,而扩容也是2倍的原来的容量进行扩容,也就是扩容后的容量也是2n次幂的形式存在的,下面就来说明一下为什么是2n次幂的形式!...
  • 一、如何判断一个整数是2n次幂? 分析可以用枚举法判断一个数是2的你次,代码如下: package com.aim.getoff; import java.math.BigInteger; import java.util.Scanner; public class Judge2N { public ...
  • 一、jdk1.8中,对“HashMap的容量一定要是2n次幂”做了严格控制  1.默认初始容量: [Java]纯文本查看复制代码 ? 1 2 3 4 /** * The default initial capacity - MUST...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,614
精华内容 14,245
关键字:

java计算2的n次幂

java 订阅