a065: 提款卡密碼

2022.12.04 PM 09:30 by CBJ

來源 : https://zerojudge.tw/ShowProblem?problemid=a065
出題者 : snail蝸牛
標籤 : 字元處理
難易度 : 1
解題想法 : 
很直覺的會想用ascii來做,因為ascii本身是依據字母順序編碼(詳可參考 : https://zh.wikipedia.org/wiki/ASCII#%E5%8F%AF%E6%98%BE%E7%A4%BA%E5%AD%97%E7%AC%A6),而取得a和b的距離就和取兩座標點距離相同,也就是|ascii(a)-ascii(b)|,其中ascii(n)為n的ascii碼。

實作上可以跑一個for i from 1~(字串長-1),每次和前一個算距離並輸出,迴圈完成後再輸出換行。

Tips: 
Python取ascii碼可使用ord(),而C/C++本身就支援字元相減(會轉成ascii後相減),因此不須另外將字元轉成ascii數值。
//C language

#include<stdio.h>
#include<string.h> //strlen()
#include<stdlib.h> //abs()
int main(){
    char s[7];
    scanf("%s",s);
    for(int i=1;i<strlen(s);i++){
        printf("%d",abs(s[i]-s[i-1]));
    }
    printf("\n");
    return 0;
}
//C++ language

#include<iostream>
#include<string>  //string
#include<cstdlib>  //abs()
using namespace std;
int main(){
    string s;
    cin>>s;
    for(int i=1;i<s.length();i++){
        cout<<abs(s[i]-s[i-1]);
    }
    cout<<"\n";
    return 0;
}
## Python language

a=input()
for i in range(1,len(a)):
    print(abs(ord(a[i])-ord(a[i-1])),end='')
print()

相關文章