---
# System prepended metadata

title: Zerojudge 程式練習

---

# Zerojudge 程式練習
## [a009: 解碼器](https://zerojudge.tw/ShowProblem?problemid=a009)

### 參考程式
```cpp=
#include <stdio.h>
int main() {
    char c;
    int  d = 'J'-'C'; 
    while(scanf("%c",&c)!=EOF) {
        printf("%c",c-d);
    }
    printf("\n");
    return 0;
}
```

## [a022: 迴文](https://zerojudge.tw/ShowProblem?problemid=a022)

### cstring字串基本特性測試程式
```cpp=
#include <stdio.h>
int main() {
    char s[1000];
    int len=0,i;
    printf("輸入字串:");
    scanf("%s",s);
    printf("輸入字串:%s\n",s);
    i=0;
    while(s[i++]!=0) len++;
    printf("字串長度:%d\n",len);
    return 0;
}
```


### 參考程式
```cpp=
#include <stdio.h>
int main() {
    char s[1000];
    int len=0,i,rt=1;
    scanf("%s",s);  // 輸入字串，陣列變數前不用加&
    while(s[i++]!=0) len++;
    for(i=0; i<len; i++) 
        if(s[i]!=s[len-i-1]) rt=0; //須能推出字串從後開始的索引
    if(rt==1) printf("yes\n");
    else printf("no\n");
    return 0;
}
```

```cpp=
// string version
#include <iostream>
#include <string>
using namespace std;
int main() {
    string s;
    int len,rt=1;
    cin>>s;  // 輸入
    len = s.length();
    for(int i=0; i<len; i++)
        if(s[i]!=s[len-i-1]) rt = 0;
    if(rt==1) cout<<"yes\n";
    else cout<<"no\n";
    return 0;
}
```

## [a020: 身分證檢驗](https://zerojudge.tw/ShowProblem?problemid=a020)

### 參考程式
```cpp=
#include <stdio.h>

int main() {
    //宣告
    int idn[] = {10,11,12,13,14,15,16,17,34,18,19,20,21,
                 22,35,23,24,25,26,27,28,29,32,30,31,33};
    char id[11];
    int i,sum,t;
    //輸入
    scanf("%s",id);
    //處理(ex: A123456789)
    // 1 查表
    t = idn[id[0]-'A'];
    // 2 個位數*9+十位數
    sum = (t%10)*9+t/10;
    // 3 取出數字再做數字加權
    for(i=1; i<9; i++)
        sum+= (id[i]-'0')*(9-i);
    // 4
    sum+= (id[9]-'0');
    // 5 判斷 & 輸出
    if(sum%10==0) printf("real\n");
    else printf("fake\n");
    return 0;
}
```

```python=
# 建表
idn = 10,11,12,13,14,15,16,17,34,18,19,20,21,22,35,23,24,25,26,27,28,29,32,30,31,33
# 輸入
s = input()
# 處理(ex: A123456789)
# 1 查表
n = idn[ord(s[0])-ord('A')]
# 2 個位數*9+十位數
sum = (n%10)*9+n//10
# 3 取出數字再做數字加權
for i in range(1,9):
    sum= sum+int(s[i])*(9-i)
# 4 加上最後一碼
sum = sum+int(s[9])
# 5 判斷 & 輸出
if sum%10==0:
    print('real')
else:
    print('fake')
```

## [a010: 因數分解](https://zerojudge.tw/ShowProblem?problemid=a010)

### 參考程式
```cpp=

```

## [a040: 阿姆斯壯數](https://zerojudge.tw/ShowProblem?problemid=a040)

### 參考程式
```cpp=

```


## [c290. APCS 2017-0304-1秘密差](https://zerojudge.tw/ShowProblem?problemid=c290)

```python=
# 輸入一個整數 
n = input()
# 處理
    # 設定奇數位和、偶數位和初值為0
    # 判斷奇偶位數，加到對應奇偶位數和
odds,evens = 0,0
for i in range(len(n)):
    if i%2==0:
        evens = evens+int(n[i])
    else:
        odds = odds+int(n[i])
# 相減取絕對值後輸出
print(abs(evens-odds))

```