其實這跟 Day 15 寫的 UVA12468: Zapping 很類似,所以我參考了一些(?
Day 15 傳送門
題目是說有一副鎖,而從原本的樣子到解開需要轉幾次,而數字最多只有5位數,輸入有兩個,一個是原本的樣子,一個是正確密碼,輸出要轉幾次。
#include <stdio.h>
int numlen(int n){ //計算該數字位數
int l=1,i;
for(i=0;i<4;i++){
if( (n/10) > 0 ) l++;
else break;
n /= 10;
}
return l;
}
int cnum(int n,int m){ //計算需要轉幾次
int num[2];
if(n>m){
num[0] = n-m; //沒跨過9到0
num[1] = m+10-n; //跨過9到0
}
else{
num[0] = m-n; //沒跨過9到0
num[1] = n+10-m; //跨過9到0
}
if(num[0]>=num[1]){
return num[1];
}
else{
return num[0];
}
}
int main(){
int x,y;
while(scanf("%d %d",&x,&y)!=EOF){
int len,sum=0;
if(numlen(x)>=numlen(y)) len = numlen(x); //計算該數字位數以排除有0的狀況
else len = numlen(y);
int i;
for(i=0;i<len;i++){
sum += cnum((x%10),(y%10));
x /= 10;
y /= 10;
}
printf("%d\n",sum);
}
return 0;
}