x 的 x 次方等于10,求 x

当 x 的 x 次方为10时,求 x 的值,精确到小数位后9位

过程如下:

2 的 2 次方 小于 10;

3 的 3 次方 大于 10;

因此 x 在 2 到 3 之间。

找出整数部分后,需要计算出小数部分,然后把两部分加到一个串里即可(可以以串的形式输出,也可以转成浮点数输出,下面的程序是以串的形式输出的)。

用试探法来做,过程如下:

小数点后第一位,从 0 开始,加在整数部分后面组成一个新数 y,如果 y 的 y 次方小于 10,把 0 去掉,加上 1,......

  依次往下加,直到 y 的 y 次方大于 10,即可确定 x 的小数部分的第一位为当前数字的前一位。

  例如:

  2.1 的 2.1 次方 小于 10;

  2.2 的 2.2 次方 小于 10;

  ……

  2.5 的 2.5 次方 小于 10;

  2.6 的 2.6 次方 大于 10;

  因此,小数第一位是 5,当前 x 为 2.5……。

同理,即可求出小数部分的第 2 到 9 位。

程序如下:

//2017.03.16  by 迷糊狐狸
public class Test {
    static String s = "";
        
    static String f(double d){
        for(int i=1; i<d; i++){
            if(Math.pow(i, i)>=d){
                s = f(9, i-1, d);
                break;
            }
        }
        s = s.charAt(0) + "." + s.substring(1);
        return s;
    }
    
    static String f(int k, int n, double p){
        s = s + n;
        if(k<=0)return s;
        String s1 = s.charAt(0) + "." + s.substring(1);
        String s2 = "";
        for(int i=1; i<=10; i++){
            double d = Double.parseDouble(s1 + i);
            if(Math.pow(d, d)>p){
                s2 = f(k-1, i-1, p);
                s = n + f(k-1, i-1, p);
                break;
            }
        }
        s = s2;
        return s;
    }

    public static void main(String[] args) {
        String s = f(10);
        System.out.println(s);
        double d = Double.parseDouble(s);
        System.out.println(Math.pow(d, d));
    }

}

 该程序的后一个输出为检验第一个结果所用。

输出结果如下:

 

转载于:https://www.cnblogs.com/liyuanba/p/x-x----10.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值