游客 Signup | Login
中文 | En

1565 - 奇偶校验


输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数(如'3',输出:10110011)。

<br />

Input

输入包括一个字符串,字符串长度不超过100。

Output


可能有多组测试数据,对于每组数据,<br />

对于字符串中的每一个字符,输出按题目进行奇偶校验后的数,每个字符校验的结果占一行。

<br />

Examples

Input

3245
1264gh

Output

10110011
00110010
00110100
10110101
00110001
00110010
10110110
00110100
01100111
01101000

Solution C

#include<stdio.h>
#include<string.h>
#include<math.h>
void change(char * a,int b)
{
	int i=0;
	while(b!=0)
	{
		a[i]=(int)b%2+48;
		b=(int)b/2;
		i++;
	}
	a[i]='\0';
}
int main()
{
	char c[110];
	int i,count,b,j;
	char a[50]={0};
	while(scanf("%s",c)!=EOF)
	{
		count=0;
		j=0;
		while(c[j])
		{
			count=0;
			b=(int)c[j];
			change(a,b);
			for(i=0;a[i];i++)
			{
				if(a[i]=='1')
					count++;
			}
			if(i<7)
			{	a[i]='0';
			   i++;
			}
			if((int)count%2==1)
				a[i]='0';
			else
				a[i]='1';
			while(i>=0)
			{
				printf("%c",a[i]);
				i--;
			}
			printf("\n");
			i=0;
			j++;
		}

	}
	
return 0;
}

Solution C++

 #include <stdio.h>
 
 int main()
 {
     char a[100];
     int i,j,k,b[8];
     int asc,sum;
     
     while(scanf("%s",&a)!=EOF)
     {
         for(i=0;a[i]!='\0';i++)
         {
             asc=(int) a[i];
             sum=0;            //sum清零
             for(k=7;k>0;k--)
             {
                 b[k]=asc%2;
                 if(b[k]==1)
                     sum++;   //统计a[i](二进制)"1" 的个数
                 asc/=2;
             }
             if(sum%2==0)
                 b[0]=1;      //校验位为b[0]
             else b[0]=0;
             for(j=0;j<8;j++)
                 printf("%d",b[j]);
             printf("\n");
         }
     }
     return 0;
 }
Time Limit 1 second
Memory Limit 32 MB
Discuss Stats
上一题 下一题