#167: 如何跑的更快?


dowdow (QC.L of WLCSC)

學校 : 國立武陵高級中學
編號 : 1013
來源 : [140.112.25.49]
最後登入時間 :
2012-03-23 10:04:16
a040. 阿姆斯壯數 | From: [220.138.86.155] | 發表日期 : 2008-02-15 22:42

      
*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 ()

學校 : 國立臺中技術學院
編號 : 1139
來源 : [220.135.97.253]
最後登入時間 :
2012-02-04 21:23:42
a040. 阿姆斯壯數 | From: [220.134.60.246] | 發表日期 : 2008-02-16 21:41

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

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

這樣應該就超快的 

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


firejox (tangent)

學校 : 國立臺中第一高級中學
編號 : 8517
來源 : [36.235.168.46]
最後登入時間 :
2023-03-12 03:01:48
a040. 阿姆斯壯數 | From: [210.60.107.233] | 發表日期 : 2010-04-19 20:10

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

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

這樣應該就超快的 


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


youc (優希)

學校 : 不指定學校
編號 : 11343
來源 : [140.119.164.22]
最後登入時間 :
2011-11-09 18:55:20
a040. 阿姆斯壯數 | From: [140.119.164.22] | 發表日期 : 2011-08-01 18:25

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

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

這樣應該就超快的 


可是我才丟19個就AC了耶


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

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

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

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

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


youc (優希)

學校 : 不指定學校
編號 : 11343
來源 : [140.119.164.22]
最後登入時間 :
2011-11-09 18:55:20
a040. 阿姆斯壯數 | From: [140.119.164.22] | 發表日期 : 2011-08-01 18:30

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

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

這樣應該就超快的 


可是我才丟19個就AC了耶

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


a63420000 (玉蟲色的珊瑚)

學校 : 國立中興大學
編號 : 23980
來源 : [114.33.55.248]
最後登入時間 :
2013-03-26 21:16:51
a040. 阿姆斯壯數 | From: [114.33.55.248] | 發表日期 : 2012-10-17 23:05

不知道我說的對不對 

請多利用副程式

 

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


ypesandy (真實姓名)

學校 : 新北市立板橋高級中學
編號 : 26868
來源 : [114.34.243.31]
最後登入時間 :
2013-01-25 16:28:10
a040. 阿姆斯壯數 | From: [118.160.232.253] | 發表日期 : 2013-01-06 11:45

      
*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喔



 
ZeroJudge Forum