1. 程式人生 > >mooc-程式設計入門-c語言-數字特徵值

mooc-程式設計入門-c語言-數字特徵值

數字特徵值(5分)

題目內容:

對數字求特徵值是常用的編碼演算法,奇偶特徵是一種簡單的特徵值。對於一個整數,從個位開始對每一位數字編號,個位是1號,十位是2號,以此類推。這個整數在第n位上的數字記作x,如果x和n的奇偶性相同,則記下一個1,否則記下一個0。按照整數的順序把對應位的表示奇偶性的0和1都記錄下來,就形成了一個二進位制數字。比如,對於342315,這個二進位制數字就是001101。

 

這裡的計算可以用下面的表格來表示:

 

數字

3

4

2

3

1

5

數位

6

5

4

3

2

1

數字奇偶

數位奇偶

奇偶一致

0

0

1

1

0

1

二進位制位值

32

16

8

4

2

1

 

你的程式要讀入一個非負整數,整數的範圍是[0,1000000],然後按照上述演算法計算出表示奇偶性的那個二進位制數字,輸出它對應的十進位制值。

 

提示:將整數從右向左分解,數位每次加1,而二進位制值每次乘2。

 

輸入格式:

一個非負整數,整數的範圍是[0,1000000]。

 

輸出格式:

一個整數,表示計算結果。

 

輸入樣例:

342315

 

輸出樣例:

13

#include<stdio.h>
#include<math.h>
main()
{
    int i=1;
    int sum=0;
    int num;
    scanf("%d",&num);
    do
    {
        int temp = num %10;//取最後一位
        if((temp%2) == (i%2))
        {
            sum+=pow(2,i-1);
        }
        i++;
        num/=10; 
    }while(num!=0);
    printf("%d",sum);
    return 0;    
}