double n = 2;//底数
double m = x;//指数
double value = Math.log(m) / Math.log(n);
-
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 扩展方法:
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 }
简要说明如下:
第 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 扩展方法的测试程序:
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 }
运行结果如下所示:
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:002019独角兽企业重金招聘Python工程师标准>>> ...//指数 double value = Math.log(m) / Math.log(n); 转载于:https://my.oschina.net/huangguangsheng/blog/1591480转载于:https://my.oschina.net/huangguangsheng/blog/1591480
-
Java Math类的常用方法,指数运算
2021-02-12 18:34:28前面给大家讲过JavaMath类的常用方法三角函数运算的内容,下面的话要给大家来讲一下指数运算方面的知识。指数的运算包括求方根、取对数及其求 n 次方的运算。在 Math 类中定义的指数运算方法及其说明如下所示:使用 ...前面给大家讲过Java
Math类的常用方法三角函数运算的内容,下面的话要给大家来讲一下指数运算方面的知识。
指数的运算包括求方根、取对数及其求 n 次方的运算。在 Math 类中定义的指数运算方法及其说明如下所示:
使用 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指数(身高体重指数)的源代码
2022-03-17 23:37:50java代码-使用java解决计算BMI指数(身高体重指数)的源代码 ——学习参考资料:仅用于个人学习使用! -
java计算身体质量指数
2022-05-02 10:59:47java中用Scanner类从键盘中读取数据来计算身体质量指数BMI, -
java中幂指数值的运算代码解析
2021-04-16 16:20:35在Java中,当我们计算2的n次方时,可以直接用Math.pow来计算。非常方便。但是,已知一个幂的结果为M和幂的底数a,现在要求幂的指数n。Math中提供的有log(double)方法,但是只能传入一个参数,即M。那么问题来了,如何... -
java基础知识之一:求指数
2021-10-23 11:06:04java基础知识之一 :求指数 ana^nan java 中没有专门的运算符号用于求指数操作,^在java 中表示的是异或操作,求指数需要用专门的java工具类Math. public class HelloWorld { public static void main(String []... -
Java实现指数运算
2018-10-07 21:10:06import java.math.BigInteger; public class Solution { public double Power(double base, int exponent) { Double sum=1.0; for(int i=1;i<=Math.abs(exponent);i++) { sum*=b... -
标准化降水蒸散发指数 SPEI计算,Java实现
2021-06-10 17:03:03适合了解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的倍数。这里我们就用到了移位运算(移位运算是基于二进制... -
Calculate-Heat-Index-Java:将计算热指数的 Java 类
2021-07-06 09:31:05计算热指数-Java 将计算热指数的 Java 类。 此代码是从提取,以便在您自己的应用程序中轻松重用此功能。 heatIndexCal方法采用两个双heatIndexCal值:温度和相对湿度。 例子: calculatedHeatIndex = calIndex.... -
java编写的表达式求值(支持小数,指数运算)
2018-10-19 17:27:03java编写的表达式求值(支持小数,指数运算),第一次上传,多多指教 -
java身体指数计算判定<BMI>
2019-09-26 16:46:15import 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:46Math.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:43java指数运算math[2021-02-06 21:09:01]简介:php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace("/(\s|\ \;| |\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 -
Java 计算身体BMI指数 判断是否超重
2021-09-03 19:40:30BMI=体重/身高的平方 先分别输入体重和身高 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)计算器功能示例
2020-08-28 13:13:37主要介绍了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... -
<Java>根据身高体重计算BMI指数
2022-04-27 23:09:12System.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:54import 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。
2021-04-08 09:10:07如何正确的计算体质指数BMI。答:BMI=体重/身高2正式把建立社会主义市场经济体制确立为我国经济体制改革的目标的会议是( )答:党的十四大我国肾综合征出血热最主要的传染源是:答:黑线姬鼠折半查找有序表(4,6,10,... -
java基础篇:计算BMI体质指数并给出相应的提示
2020-07-22 09:43:11/* 计算体质指数,数据由键盘录入 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 ...