精华内容
下载资源
问答
  • java算法-指数运算(大数运算)
    千次阅读
    2021-02-27 14:26:15

    指数运算

    时间限制:600 ms  |  内存限制:65535 KB

    难度:2

    描述 写一个程序实现指数运算 X^N。(1输入输入包含多行数据

    每行数据是两个整数X N

    数据以EOF结束输出于输入的每一行输出X^N的值样例输入2 1

    3 2

    样例输出2

    9

    来源水题比赛

    /*

    * 指数运算

    * 思路:看到最大为10的20次方可认为是java的大数运算问题

    * 直接使用java自带的函数

    * 程序如下

    */

    import java.math.BigInteger;

    import java.util.Scanner;

    public class Main {

    public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);

    while (sc.hasNext()) {

    BigInteger fir = sc.nextBigInteger();

    int sec = sc.nextInt();

    BigInteger sum = fir.pow(sec);

    System.out.println(sum);

    }

    sc.close();

    }

    }

    更多相关内容
  • 计算指数函数的算法

    2021-03-06 03:40:28
    现在我们来看看计算指数函数的算法。我们知道,指数函数 ex可以展开为泰勒级数:这个级数对全体实数 x 都收敛,并且在 x 接近零时收敛得比较快。实现该算法的 C# 程序根据前面所述的 ex的泰勒级数展开式,可以写出...

    引言

    我在上一篇随笔中介绍了计算自然对数的快速算法。现在我们来看看计算指数函数的算法。我们知道,指数函数 ex 可以展开为泰勒级数:

    这个级数对全体实数 x 都收敛,并且在 x 接近零时收敛得比较快。

    实现该算法的 C# 程序

    根据前面所述的 ex 的泰勒级数展开式,可以写出以下 C# 程序来为 decimal 数据类型添加一个 Exp 扩展方法:

    b2b9c2e410241fcdcdfe3453632fde9b.gif

    1 usingSystem;2

    3 namespaceSkyiv.Extensions4 {5 static classDecimalExtensions6 {7 static readonly decimal expmax = 66.542129333754749704054283659m;8 static readonly int[] mask = { 1, 2, 4, 8, 16, 32, 64};9 static readonly decimal[] exps =

    10 {11 2.71828182845904523536028747135m, //exp(1)

    12 7.38905609893065022723042746058m, //exp(2)

    13 54.5981500331442390781102612029m, //exp(4)

    14 2980.95798704172827474359209945m, //exp(8)

    15 8886110.52050787263676302374078m, //exp(16)

    16 78962960182680.6951609780226351m, //exp(32)

    17 6235149080811616882909238708.93m //exp(64)

    18 };19

    20 public static decimal Exp(this decimalx)21 {22 if (x > expmax) throw new OverflowException("overflow");23 if (x < -66) return 0;24 var n = (int)decimal.Round(x);25 if (n > 66) n--;26 decimal z = 1, y = Exponential(x -n);27 for (int m = (n < 0) ? -n : n, i = 0; i < mask.Length; i++)28 if ((m & mask[i]) != 0) z *=exps[i];29 return (n < 0) ? (y / z) : (y *z);30 }31

    32 static decimal Exponential(decimalq)33 { //q (almost) in [ -0.5, 0.5 ]

    34 decimal y = 1, t =q;35 for (var i = 1; t != 0; t *= q / ++i) y +=t;36 returny;37 }38 }39 }

    b2b9c2e410241fcdcdfe3453632fde9b.gif

    简要说明如下:

    第 7 行的 expmax 的值是 decimal.MaxValue 的自然对数的近似值,用于检测 Exp 方法是否溢出(第 22 行)。

    第 20 至 30 行的 Exp 扩展方法就是用来计算指数函数了。

    该方法利用 ex+y = exey 这个公式,将参数 x 分为整数部分 n 和小数部分 x - n 来计算。

    整数部分 n 又分解为 1、2、4、8、16、32、 64 诸数中某些的和,利用事先计算出来的常量来计算。

    第 25 行是为了防止将 e66.5421 分解为 e67e-0.4579,这样在计算 e67 时会溢出。而是分解为 e66e0.5421。

    第 32 至 37 行的 Exponential 方法使用泰勒级数来计算 ex 。它的参数 q 越接近于零就计算得越快。

    这个算法还是很快的,第 35 行的 for 循环执行次数不会超过 22 次。

    测试程序

    下面就是调用 decimal 数据类型的 Exp 扩展方法的测试程序:

    b2b9c2e410241fcdcdfe3453632fde9b.gif

    1 usingSystem;2 usingSkyiv.Extensions;3

    4 classTester5 {6 static voidMain()7 {8 try

    9 {10 foreach (var x in new decimal[] {11 -100, -66, -65, -1, 0, 1, 2.5m, 16, 66.5421m, 67})12 Console.WriteLine("{0,-30}: exp({1})", x.Exp(), x);13 }14 catch(Exception ex) { Console.WriteLine(ex.Message); }15 }16 }

    b2b9c2e410241fcdcdfe3453632fde9b.gif

    运行结果如下所示:

    work$ dmcs Tester.cs DecimalExtensions.cs

    work$ mono Tester.exe

    0 : exp(-100)

    0.0000000000000000000000000000: exp(-66)

    0.0000000000000000000000000001: exp(-65)

    0.3678794411714423215955237702: exp(-1)

    1 : exp(0)

    2.7182818284590452353602874714: exp(1)

    12.182493960703473438070175950: exp(2.5)

    8886110.520507872636763023741 : exp(16)

    79225838488862236701995526357 : exp(66.5421)

    overflow

    可以看出,在计算 e67 时发现了溢出。这是因为:

    decimal.MaxValue = 79,228,162,514,264,337,593,543,950,335

    e67 = 125,236,317,084,221,378,051,352,196,074.4365767534885274 ...

    可以看出,e67 已经超过 decimal 的最大值了。

    事先计算的常数

    在 DecimalExtensions.cs 程序的第 9 至 18 行中的 exps 静态只读数组中存放了 e1、e2、e4、e8、e16、e32 和 e64 的值。这些值是如何得到的呢?这很简单,Linux 操作系统中有一个高精度计算器 bc 。我们可以先编辑一个如下内容的文本文件 exps_in.txt:

    scale=30

    e(1)

    e(2)

    e(4)

    e(8)

    e(16)

    e(32)

    e(64)

    l(2^96-1)

    quit

    上面的 e 代表 exp,l 代表 ln,296 - 1 就是 decimal.MaxValue。然后执行以下命令:

    work$ bc -l exps_in.txt > exps_out.txt

    就可以得出如下内容的输出 exps_out.txt:

    2.718281828459045235360287471352

    7.389056098930650227230427460575

    54.598150033144239078110261202860

    2980.957987041728274743592099452888

    8886110.520507872636763023740781450350

    78962960182680.695160978022635108224219956195

    6235149080811616882909238708.928469744831391846235799914388

    66.542129333754749704054283659972

    稍加整理,就可以用在上述 C# 程序中了:

    前 7 行就是 e 的各次幂。

    最后一行就是 decimal.MaxValue 的自然对数。

    展开全文
  • java 计算指数函数log2(X)的值

    千次阅读 2017-12-18 15:37:00
    2019独角兽企业重金招聘Python工程师标准>>> ...//指数 double value = Math.log(m) / Math.log(n); 转载于:https://my.oschina.net/huangguangsheng/blog/1591480

             double n = 2;//底数
             double m = x;//指数
             double value = Math.log(m) / Math.log(n);

    转载于:https://my.oschina.net/huangguangsheng/blog/1591480

    展开全文
  • Java Math类的常用方法,指数运算

    千次阅读 2021-02-12 18:34:28
    前面给大家讲过JavaMath类的常用方法三角函数运算的内容,下面的话要给大家来讲一下指数运算方面的知识。指数的运算包括求方根、取对数及其求 n 次方的运算。在 Math 类中定义的指数运算方法及其说明如下所示:使用 ...

    前面给大家讲过Java

    Math类的常用方法三角函数运算的内容,下面的话要给大家来讲一下指数运算方面的知识。

    指数的运算包括求方根、取对数及其求 n 次方的运算。在 Math 类中定义的指数运算方法及其说明如下所示:

    e27162ae629a8201c6c6689e4a504a72.png

    使用 Math 类中的方法实现指数的运算,main()方法中的代码如下:public class Test05

    {

    public static void main(String[] args)

    {

    System.out.println("4 的立方值:" + Math.pow(4, 3));

    System.out.println("16 的平方根:" + Math.sqrt(16));

    System.out.println("10 为底 2 的对数:" + Math.log1O(2));

    }

    }

    该程序的运行结果如下:4 的立方值:64.0

    16 的平方根:4.0

    10 为底 2 的对数:0.3010299956639812

    以上就是关于Java Math类的常用方法指数运算的简单介绍了,假如你还想了解更多的相关知识,请继续关注本站的java入门栏目来了解吧。

    推荐阅读:

    展开全文
  • java代码-使用java解决计算BMI指数(身高体重指数)的源代码 ——学习参考资料:仅用于个人学习使用!
  • java计算身体质量指数

    2022-05-02 10:59:47
    java中用Scanner类从键盘中读取数据来计算身体质量指数BMI,
  • Java中,当我们计算2的n次方时,可以直接用Math.pow来计算。非常方便。但是,已知一个幂的结果为M和幂的底数a,现在要求幂的指数n。Math中提供的有log(double)方法,但是只能传入一个参数,即M。那么问题来了,如何...
  • java基础知识之一 :求指数 ana^nan java 中没有专门的运算符号用于求指数操作,^在java 中表示的是异或操作,求指数需要用专门的java工具类Math. public class HelloWorld { public static void main(String []...
  • Java实现指数运算

    千次阅读 2018-10-07 21:10:06
    import java.math.BigInteger; public class Solution { public double Power(double base, int exponent) { Double sum=1.0; for(int i=1;i&lt;=Math.abs(exponent);i++) { sum*=b...
  • 适合了解Java,需要计算SPEI的用户,注意只能计算12月及以内时间尺度,博客:https://blog.csdn.net/qq_40821274/article/details/117694834?spm=1001.2014.3001.5501 ,交流可联系:csh_giser@163.com
  • Java指数

    千次阅读 2017-06-30 11:43:32
    Java中,当我们计算2的n次方时,可以直接用Math.pow来计算。非常方便。 但是,已知一个幂的结果为M和幂的底数a , 现在要求幂的指数n。Math中提供的有log(double)方法,但是只能传入一个参数,即M。那么问题来了,...
  • java:数学运算的指数函数方法

    千次阅读 2020-02-02 15:39:16
    数学运算的指数函数方法相关说明源码运行结果 相关说明 方法Math.A A为各种数学方法 数学方法(这里的A): exp(a) :e的a次方 log(b) :ln(b)的值 lgc :lgc的值 sqrt(d) :根号d的结果,且d不为负数 cbrt(h)...
  • java中幂指数值的运算

    千次阅读 2021-02-12 14:56:21
    这个方法可以满足我们大多数幂指数计算,但是每次访问的值和传入的值都是double,自己不想去转的话怎么办,我们有一种新的方案。方案前提:幂指数的底数是2的倍数。这里我们就用到了移位运算(移位运算是基于二进制...
  • 计算指数-Java计算指数Java 类。 此代码是从提取,以便在您自己的应用程序中轻松重用此功能。 heatIndexCal方法采用两个双heatIndexCal值:温度和相对湿度。 例子: calculatedHeatIndex = calIndex....
  • java编写的表达式求值(支持小数,指数运算),第一次上传,多多指教
  • java身体指数计算判定<BMI>

    千次阅读 2019-09-26 16:46:15
    import java.util.Scanner; //输入 public class BMI{ public static void main(String[] args){ Scanner sca = new Scanner(System.in); System.out.println("请输入体重(kg):"); double weight = sca....
  • Java中常用的数学函数

    千次阅读 2021-03-06 04:41:46
    Math.atan(a) 返回角度的反三角正切函数值 指数函数方法 Math.exp(x) 返回算术常量E的x次方 Math.log(x) 返回x的自然底数 Math.log10(x) 返回x的以十为底的对数 Math.pow(a,b) 返回a的b次方 Math.sqrt(x) 对于0以上...
  • java指数运算math

    2021-04-23 10:39:43
    java指数运算math[2021-02-06 21:09:01]简介:php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推荐...
  • java 指数计算

    千次阅读 2016-12-15 20:09:44
    /** * 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 */ public static void testGetExponentOfNum() { double base = Math.random(); int exponent = new Random().nex
  • BMI=体重/身高的平方 先分别输入体重和身高 double weight,height; Scanner input = new Scanner(System.in); System.out.print("请输入你的体重:(kg)");...然后计算BMI height = input.nextDouble();
  • Java计算幂的指数

    万次阅读 2015-11-27 14:04:31
    Java中,当我们计算2的n次方时,可以直接用Math.pow来计算。非常方便。 但是,已知一个幂的结果为M和幂的底数a , 现在要求幂的指数n。Math中提供的有log(double)方法,但是只能传入一个参数,即M。那么问题来了,...
  • 主要介绍了Java Swing实现简单的体重指数(BMI)计算器功能,涉及Java Swing窗口组件布局、响应及数值运算相关操作技巧,需要的朋友可以参考下
  • Java程序来计算体重指数(BMI)

    千次阅读 2021-01-12 06:58:40
    体重指数是以千克为单位的体重除以以...给出了一个计算体重指数(BMI)的程序。示例importjava.util.Scanner;publicclassExample{publicstaticvoidmain(Stringargs[]){Scannersc=newScanner(System.in);System.out.pr...
  • System.out.println("您的BMI指数为:"+ exponent); System.out.print("您的体重属于:"); if (exponent){ System.out.println("体重过轻"); } if (exponent>=18.5){ System.out.println("正常范围"); } if ...
  • 计算身体质量指数

    2021-03-14 19:10:54
    import java.util.Scanner;public class ComputeAndInterpretBMI {public static void main(String [] args){Scanner input = new Scanner(System.in);System.out.print("Enter weight in pounds:");double weight =...
  • Java计算BMI

    2022-01-12 19:07:14
    身体质量指数(BMI)是对体重的健康测量。它的值可以通过将体重(公斤)除以身高(米)的平方值得到。 编写程序,提示用户输入体重(磅)以及身高(英寸),然后显示BMI。注意:一磅是0.45359237公斤,一英寸是0....
  • 如何正确的计算体质指数BMI。答:BMI=体重/身高2正式把建立社会主义市场经济体制确立为我国经济体制改革的目标的会议是( )答:党的十四大我国肾综合征出血热最主要的传染源是:答:黑线姬鼠折半查找有序表(4,6,10,...
  • /* 计算体质指数,数据由键盘录入 BMI=体重/身高的平方*/ public class Bim { public static void main(String[] args) { Scanner scanner=new Scanner(System.in);// 键盘录入 System.out.println(
  • java空气质量指数AQI算法

    千次阅读 2019-08-14 16:40:23
    项目中要对空气质量指数AQI进行计算,空气质量指数AQI浓度限值找到的资料如下: 计算方法如下: 如何用java实现这个算法了,下面贴上计算代码: package com.rate.rate_pz_server.util; import ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,232
精华内容 17,692
关键字:

java计算指数

java 订阅