要求:
1、最高位和个位不能变
2、自然数变换前后位数不能变,即原来是6位,变换后依然是6位
3、最重要的:变换后的数字,可以推出原数
还有一个要求忘了:
算法不能有判断条件
比如:十位%2==0 为偶数 否则为奇数则+1 这是不行的
// jernymy test for six Natural number, process ten bit to even
// 20110719
// use XOR(^) to process
#include "stdio.h"
//#define FOR_TEST
int main(void)
{
int nTstVar = 123456; // 123446; // init var
int nProcVar; // process var
int nBackVar; // back to var == init var
int nTen = (nTstVar/10) - (nTstVar/100)*10;
int nMdx = (nTen + 2) % 2; // jernymy 保证nMdx值在0-2之间
// jernymy process var
nProcVar = nTstVar-nTen*10;
nTen = nTen ^ nMdx;
nProcVar = nProcVar+nTen*10;
// jernymy back to var
nBackVar = nProcVar-nTen*10;
nTen = nTen ^ nMdx;
nBackVar = nBackVar+nTen*10;
printf("--jernymy test Natural number--\n");
printf("Current var:%d\n", nTstVar);
printf("Process var:%d\n", nProcVar);
printf("BackTo var:%d\n", nBackVar);
#ifdef FOR_TEST // jernymy just only for test
int nIdx = 0;
int nMdx;
for (nIdx = 0; nIdx < 10; nIdx++)
{
printf("Current var:%d\n", nIdx);
nMdx = (nIdx + 2) % 2; // jernymy 保证nMdx值在0-2之间
nIdx = nIdx ^ nMdx;
printf("Process var:%d\n", nIdx);
nIdx = nIdx ^ nMdx;
printf("BackTo var:%d\n", nIdx);
printf("-----------------\n");
}
#endif // #ifdef FOR_TEST
return 0;
}