#6264: 如何加速?


cs2012 (小嫩咖)

學校 : 國立臺中第一高級中學
編號 : 23521
來源 : [61.216.15.113]
最後登入時間 :
2012-02-14 00:48:25
a040. 阿姆斯壯數 | From: [61.216.11.233] | 發表日期 : 2012-01-30 22:27

以下是我的code,已經先把數字建表放好了

不過速度還是很慢...

請高手幫忙看一下那裡可以改善?

 謝謝:)

 

import java.util.Scanner;
import java.math.*;

public class Practice
{
    public static void main(String[] args)
    {
        Scanner in=new Scanner(System.in);
        int sum;
        int digit[]=new int[9];
        String input;
        int temp;
        int index;
        int number[]=new int[1000000];
        int index_number=0;
        for(int i=1;i<1000000;i++)
        {
            sum=0;
            index=0;
            temp=i;
            while(temp>0)
            {
                digit[index++]=temp%10;
                temp/=10;
            }
           
            for(int j=0;j<index;j++)
                sum+=Math.pow(digit[j], index);
            if(sum == i)
                number[index_number++]=i;
        }
       
        int a,b;
        boolean has_number;
        while(in.hasNext())
        {
            has_number=false;
            a=in.nextInt();
            b=in.nextInt();
           
            for(int i=0;i<index_number;i++)
            {
                if(number[i]>=a)
                {
                    while(number[i]<=b)
                    {
                        System.out.print(number[i]+" ");
                        has_number=true;
                        i++;
                    }

                    break;
                }
            }
           
            if(has_number == false)
                System.out.println("none");
            else
                System.out.println();
        }
    }
}

 
ZeroJudge Forum