數(shù)字特征值(5分)
題目內(nèi)容:
對數(shù)字求特征值是常用的編碼算法,奇偶特征是一種簡單的特征值涧郊。對于一個整數(shù)贯被,從個位開始對每一位數(shù)字編號,個位是1號妆艘,十位是2號彤灶,以此類推。這個整數(shù)在第n位上的數(shù)字記作x批旺,如果x和n的奇偶性相同幌陕,則記下一個1,否則記下一個0汽煮。按照整數(shù)的順序把對應(yīng)位的表示奇偶性的0和1都記錄下來搏熄,就形成了一個二進(jìn)制數(shù)字。比如暇赤,對于342315心例,這個二進(jìn)制數(shù)字就是001101。
這里的計(jì)算可以用下面的表格來表示:
圖片.png
你的程序要讀入一個非負(fù)整數(shù)鞋囊,整數(shù)的范圍是[0,1000000]止后,然后按照上述算法計(jì)算出表示奇偶性的那個二進(jìn)制數(shù)字,輸出它對應(yīng)的十進(jìn)制值失暴。
提示:將整數(shù)從右向左分解坯门,數(shù)位每次加1,而二進(jìn)制值每次乘2逗扒。
輸入格式:
一個非負(fù)整數(shù)古戴,整數(shù)的范圍是[0,1000000]。
輸出格式:
一個整數(shù)矩肩,表示計(jì)算結(jié)果现恼。
輸入樣例:
342315
輸出樣例:
13
#include<stdio.h>
int main()
{
int A,a,d;
int b=0;
int c=1;
int Ten=0;
scanf("%d", &A); //輸入整數(shù)
while(A != 0)
{
a=A%10; //取出整數(shù)的最后一位數(shù)
b++; //位數(shù)+1
A/=10; //丟掉整數(shù)的最后一位數(shù)
if ((a+b)%2 == 0) //奇偶一致
d = 1;
else //奇偶不一致
d = 0;
Ten = c*d + Ten; //十進(jìn)制數(shù)
c*=2; //二進(jìn)制位值上升一次
}
printf("%d", Ten); //輸出十進(jìn)制數(shù)
return 0;
}
成功!.png