The Cat in the Hat一道ACM简单题。但是我老是超时。

来源:百度知道 编辑:UC知道 时间:2024/05/17 00:15:54
一只神奇聪明猫走进了一间乱七八糟的房间,他不想自己动手收拾,他决定要找帮手来工作。於是他从他的帽子中变出了N只小猫来帮他(变出来的猫,高度为原来猫的 1/(N+1) )。这些小猫也有帽子,所以每一只小猫又从他的帽子中变出N只小小猫来帮他。如此一直下去,直到这些小小小....猫小到不能再小(高度=1),他们的帽子无法再变出更小的猫来帮忙,而这些最小的猫只得动手打扫房间。注意:所有猫的高度都是正整数。

在这个问题中,给你一开始那只猫的高度,以及最后动手工作的猫的数目(也就是高度为1的猫的数目)。要请你求出有多少只猫是没有在工作的,以及所有猫的高度的总和。

Input

每组测试资料一列,有2个正整数分别代表一开始那只猫的高度,以及最后动手工作的猫的数目。0 0代表输入结束。

Output

每组测试资料输出一列,包含2个正整数分别代表有多少只猫是没有在工作的,以及所有猫的高度的总和。

Sample Input

216 125
5764801 1679616
64 1
0 0
Sample Output

31 671
335923 30275911
6 127
以下是本人的代码:

import java.util.*;
import java.text.*; //用于格式化比较
public class Main {
public static void main (String[] args) {
Scanner input = new Scanner(System.in);
NumberFormat format = new DecimalFormat();
format.setMaximumFractionDigits(14);
while(true)
{
int height = input.nextInt(); //第一只猫的长度
int workcats = in

for(int n=1 ; n <Integer.MAX_VALUE ; n++)
{ //搜索求n
String a1=format.format(((Math.log(n+1)/Math.log(n))));
String a2=format.format(((Math.log(height)/Math.log(workcats))));
if(a1.equals(a2))
{
p2=n;
break;
}

----------------------------

对这里进行优化一下,不要用字符串比较,字符串和和数字直接比较不是也恶数量级的。 数字直接比较快很多!!!!!!!!
这样应该会快很多,不知道这个题目中有没有其他计算技巧。。。。知道了也通知我一下吧

执行了没有问题啊