2011-05-29 07:57:49Morris

a065. 提款卡密碼

http://zerojudge.tw/ShowProblem?problemid=a065

內容 :

文文記性不太好,常常會忘東忘西。他也常忘記 提款卡密碼,每次忘記密碼都得帶著身份證、存摺、印章親自到銀行去重設密碼,還得繳交 50 元的手續費,很是麻煩。後來他決定把密碼寫在提款卡上免得忘記,但是這樣一來,萬一提款卡掉了,存款就會被盜領。因此他決定以一個只有他看得懂的方式把密 碼寫下來。

他的密碼有 6 位數,所以他寫下了 7 個大寫字母,相鄰的每兩個字母間的「距離」就依序代表密碼中的一位數。所謂「距離」指的是從較「小」的字母要數幾個字母才能數到較「大」字母。字母的大小則是依其順序而定,越後面的字母越「大」。

假 設文文所寫的 7 個字母是 POKEMON,那麼密碼的第一位數就是字母 P 和 O 的「距離」,由於 P 就是 O 的下一個字母,因此,從 O 開始只要往下數一個字母就是 P 了,所以密碼的第一位數就是 1。密碼的第二位數則是字母 O 和 K 的「距離」,從 K 開始,往下數 4 個字母 (L, M, N, O) 就到了 O,所以第二位數是 4,以此類推。因此,POKEMON 所代表的密碼便是 146821。

噓!你千萬別把這個密秘告訴別人哦,要不然文文的存款就不保了。

輸入說明 :

輸入有若干筆測試資料,每筆一行,每行有 7 個相連的大寫英文字母。

輸出說明 :

對於每筆測試資料,輸出它所代表的密碼。

範例輸入 :

POKEMON
TYPHOON

範例輸出 :

146821
598701

提示 :

出處 :

板橋高中教學題 (管理:snail)

/**********************************************************************************/
/*  Problem: a065 "提款卡密碼" from 板橋高中教學題                    */
/*  Language: C                                                                   */
/*  Result: AC (16ms, 260KB) on ZeroJudge                                         */
/*  Author: morris1028 at 2011-05-17 21:19:16                                     */
/**********************************************************************************/


#include<stdio.h>
#include<stdlib.h>
main() {
    char S[8], a;
    while(scanf("%s", &S) == 1) {
        for(a = 1; S[a]; a++)
            printf("%d", abs(S[a] - S[a-1]));
        puts("");
    }
    return 0;
}

上一篇:a059. 完全平方和

下一篇:d925. 平均高度