2011年6月7日 星期二

d086: 態度之重要的證明

內容 :
    今天我們如果將a=1,b=2,c=3....以此類推下去,
將單字裏的每個文字依照上面規則轉換成數字再相加起來的話。
知識(KNOWLEDGE)只有96分,
努力(HARDWORK)只有98分,
但態度(ATTITUDE)卻是100分。
    風台高中的Norton看到了上面的文章後並不相信,
他想把它們真的加起來看看,
以找到一個字可以反駁這個「態度最重要」的理論
但卻討厭換來換去的過程,
請幫他寫個程式方便他去做運算。

輸入說明 :
    輸入英文單字,大小寫不限,當輸入0的時候就結束程式。
    長度最長為200個字。
    請參照Sample Input。

輸出說明 :
    輸出將英文單字依照題目的規則轉換成數字後相加的結果,如果中間參雜怪異的符號,請輸出Fail;但是英文字母的大小寫並不會影響結果,也就是說A和a所代表的值是相同的。請參照Sample Output。

範例輸入 :
hardwork
KNOWLEDGE
aTtitUdE
C++
0

範例輸出 :
98
96
100
Fail

程式碼 :
#include <stdio.h>
#include <string.h> 

int main() 
{
    int i,len,sum,check,A,a,Z,z;
    char s[201];
    
    A = 'A' - 1;
    Z = 'Z' + 1;
    a = 'a' - 1;
    z = 'z' + 1;
    
    while(scanf("%s",s)==1)
    {
        if(s[0] == '0' && s[1]=='\0')
            break;
        len = strlen(s);
        sum = 0;
        check = 0;
        for(i=0;i<len;i++)
        {
            if(A<s[i] && s[i]<Z)
                sum = sum + s[i] - 'A' + 1;
            else if(a<s[i] && s[i]<z)
                sum = sum + s[i] - 'a' + 1;
            else
            {
                check = 1;
                break;
            }
        }
        if(check)
            printf("Fail\n");
        else
            printf("%d\n",sum);
    }
    return 0;
}



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

沒有留言:

張貼留言