#9352: 為什麼會一直逾時?


40271201H (OO)

學校 : 國立臺灣師範大學
編號 : 44060
來源 : [140.122.53.60]
最後登入時間 :
2015-01-12 10:33:21
a038. 數字翻轉 | From: [140.122.53.42] | 發表日期 : 2014-10-26 11:38

#include <stdio.h>

int main() {
int n;
int gcd;
while(scanf("%d",&n)!=EOF){

if(n==0)
    printf("0");
    
  
else{
    gcd=n%10;
    while(gcd==0){
    gcd=n/10;
            gcd=n%10;
    }
    while(n>=1){
       printf("%d",gcd);
    n=n/10;
            gcd=n%10;
    }
       printf("\n");
   
   }
}
return 0;
}
 
#9359: Re:為什麼會一直逾時?


gtyuse (gtyuse)

學校 : 國立科學工業園區實驗高級中學
編號 : 37104
來源 : [140.112.215.56]
最後登入時間 :
2021-02-18 08:23:14
a038. 數字翻轉 | From: [123.110.232.18] | 發表日期 : 2014-10-27 20:07

while(gcd==0){
  gcd=n/10;
  gcd=n%10;
}
改成 
gcd=n%10;
while(gcd==0){
   n=n/10;
  gcd=n%10;
因為發現尾數是 0 後要把 n 除以 10
消掉最後的 0
 
另外 gcd 是最大公因數 ( Greatest common divisor ) 
建議改成 remainder, rmd, lastdigit 之類不易混淆的變數名稱
 
ZeroJudge Forum