#167: 如何跑的更快?


dowdow (QC.L of WLCSC)


      
*dowdowa040. 阿姆斯壯數AC (88ms)  
*VacationCluba040. 阿姆斯壯數AC (16ms)   
*polarbeara040. 阿姆斯壯數AC (12ms)   

在下的程式碼如同下方,請問要修正哪些地方或則使用哪種方法才能跑的像polarbearVacationClub兩位高手這麼快?

#include <stdio.h>
int i,j,n,b,s,k,m[7],o,p,x;

int main()
{
   
    while(scanf("%d %d",&s,&b)!=EOF){
    n=0;
    for(i=s;i<=b;i++){
        k=0;o=i;
       
        while(o>0){
        m[k]=o%10;
        o=o/10;    
        k++;       
        }
                   
        for(j=0;j<k;j++){
        x=1;
             for(p=0;p<k;p++){x=x*m[j];}
        o=o+x; }            
        if(i==o){printf("%d ",i);n++;}             
    }
    if(n==0){printf("none\n");}else{printf("\n");}
    }

      return 0;
}

#169: Re:如何跑的更快?


POOHccc ()


先將1~1000000之間的Armstrong number放到陣列裡

由於才20個,就直接arm[20]={1,2, ... , 153, 370, 371, 407, ... }

這樣應該就超快的 

#3655: Re:如何跑的更快?


firejox (tangent)


先將1~1000000之間的Armstrong number放到陣列裡

由於才20個,就直接arm[20]={1,2, ... , 153, 370, 371, 407, ... }

這樣應該就超快的 


可是我才丟19個就AC了耶
#5451: Re:如何跑的更快?


youc (優希)


先將1~1000000之間的Armstrong number放到陣列裡

由於才20個,就直接arm[20]={1,2, ... , 153, 370, 371, 407, ... }

這樣應該就超快的 


可是我才丟19個就AC了耶


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

這樣的方式,是允許的嗎?

若不使用這樣的方法,該如何處理兩個for loop

才不會逾時?請高手指點,謝謝!

#5452: Re:如何跑的更快?


youc (優希)


先將1~1000000之間的Armstrong number放到陣列裡

由於才20個,就直接arm[20]={1,2, ... , 153, 370, 371, 407, ... }

這樣應該就超快的 


可是我才丟19個就AC了耶

#7077: Re:如何跑的更快?


a63420000 (玉蟲色的珊瑚)


不知道我說的對不對 

請多利用副程式

 

#7374: Re:如何跑的更快?


ypesandy (真實姓名)


      
*dowdowa040. 阿姆斯壯數AC (88ms)  
*VacationCluba040. 阿姆斯壯數AC (16ms)   
*polarbeara040. 阿姆斯壯數AC (12ms)   

在下的程式碼如同下方,請問要修正哪些地方或則使用哪種方法才能跑的像polarbearVacationClub兩位高手這麼快?

#include
int i,j,n,b,s,k,m[7],o,p,x;

int main()
{
   
    while(scanf("%d %d",&s,&b)!=EOF){
    n=0;
    for(i=s;i<=b;i++){
        k=0;o=i;
       
        while(o>0){
        m[k]=o%10;
        o=o/10;    
        k++;       
        }
                   
        for(j=0;j        x=1;
             for(p=0;p        o=o+x; }            
        if(i==o){printf("%d ",i);n++;}             
    }
    if(n==0){printf("none\n");}else{printf("\n");}
    }

      return 0;
}

現在跑才8ms喔