1. 程式人生 > >數字特征值

數字特征值

輸出 輸入格式 align 記錄 就是 pac pre cells strong

題目內容:

對數字求特征值是常用的編碼算法,奇偶特征是一種簡單的特征值。對於一個整數,從個位開始對每一位數字編號,個位是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

按照二進制位值將1的位的位值加起來就得到了結果13。

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

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

輸入格式:

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

輸出格式:

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

輸入樣例:

342315

輸出樣例:

13

#include<stdio.h>  
#include<math.h>  
int main(void)  
{  
    int x,a;  
    int cnt=0;  
    int sum=0;  
      
    scanf("%d",&x);  
    while(x>0)  
    {  
      
        a=x%10;  //個位數 
        x=x/10;  
        cnt++;    //個數加一 
        if((a+cnt)%2==0)  
        {  
            sum
=sum+pow(2,cnt-1); //pow是求2的cnt-1次冪 } } printf("%d\n",sum); return 0; }

數字特征值