在Java中将给定的数字转换为幂
我有一个main函数,它调用另一个函数并将给定的数字作为参数传递。在另一个函数中,我想把给定的数分解成幂和。如何做到这一点
我的代码如下所示:
public static void main()
{
String hello=raisetopower(in.nextInt());
}
public String raisetopower(int n)
{
// do the logic
}
说明:
假设数字为25:函数应返回5^2+0^2 如果是26:5^2+1^2
# 1 楼答案
我在这里找到了这个问题的解决方案:https://github.com/Widea/Interview-Questions/blob/master/Hard/Random/PowerNumbers.java
# 2 楼答案
我同意Richard的评论,这更多的是数学而不是Java
这个问题需要更多的信息来提供代码来辅助,比如你是否考虑最大的碱基10,以及是否所有碱基都应该在输出中,即使它们的功率为0,因为你的例子令人困惑:然而,考虑到这一点,希望这个例子能够有所帮助
假设您确实考虑了一个最大基数,您可以从最高基数开始到最低基数,并使用日志
如果日志的结果大于或等于1,那么这个值应该在输出中,所以减去该值,继续下一个基数
继续,直到你的值正好为1,这应该是你的最终条件
例如,假设本例的最大基数为5,输入为27
所以我们在输出中有5^2,从输入中减去它,你可以用floor来提取'2'
小于1所以不是整数次幂
小于1所以不是整数次幂
当大于或等于1时添加到输出,当正好为1时终止
如果你只显示大于或等于1的基数(这还不清楚),此时你的输出将是:
你可以使用一个
StringBuilder
或一个有序的自定义对象集合来保存你的基础和能力,从而更容易生成输出下面是我上述算法的SSCCE:
示例输出:
# 3 楼答案