1036 - 字符串的奇偶性
时间限制 : 1 秒
内存限制 : 32 MB
我们把只有0和1组成的字符串叫做比特字符串。如果比特字符串中1的个数为奇数,则称这个比特字符串是奇性的。如果比特字符串中1的个数为偶数,则称这个比特字符串是偶性的。
注意:
(1)0是偶数,所以不包含1的比特字符串是偶性的。
(2)0的个数不影响比特字符串的奇偶性。
题目输入
输入包含多组测试数据。每组数据由1~31个0、1组成,最后跟一个小写字母e或o,e表示此比特字符串应为偶性,o表示此比特字符串应为奇性。
当输入#时,表示输入结束。
题目输出
每组输入对应一个输出,你应该将最后的字母替换成0或1,使得此比特字符串符合输入时确定的奇偶性。
输入/输出样例
输入格式
101e 010010o 1e 000e 110100101o #
输出格式
1010 0100101 11 0000 1101001010
C语言解答
#include<stdio.h> #include<string.h> int main() { int i,k,l; char a[35]; while(gets(a)) { k=0; if(!strcmp(a,"#")) break; l=strlen(a); for(i=0;i<l;i++) if(a[i]=='1') k++; if(k%2==0) { if(a[l-1]=='e') a[l-1]='0'; else a[l-1]='1'; } else { if(a[l-1]=='e') a[l-1]='1'; else a[l-1]='0'; } printf("%s\n",a); } return 0; }
C++解答
#include<stdio.h> #include<string.h> int main() { int i,k,l; char a[35]; while(gets(a)) { k=0; if(!strcmp(a,"#")) break; l=strlen(a); for(i=0;i<l;i++) if(a[i]=='1') k++; if(k%2==0) { if(a[l-1]=='e') a[l-1]='0'; else a[l-1]='1'; } else { if(a[l-1]=='e') a[l-1]='1'; else a[l-1]='0'; } printf("%s\n",a); } return 0; }
Java解答
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while(true){ String s = in.nextLine(); if(s.equals("#"))break; char[] mai = s.substring(0, s.length()-1).toCharArray(); char com = s.charAt(s.length()-1); int cou = 0; for(char c:mai) if(c=='1')cou++; if(cou%2==0&&com=='e' || cou%2==1&&com=='o')System.out.println(s.replace(com, '0')); else System.out.println(s.replace(com, '1')); } } }
Python解答
import sys for line in sys.stdin: data = list(line.split()[0]) if data[0]!='#': c1 = data.count('1') if c1%2==0: if data[-1]=='e': data[-1]='0' print ''.join([i for i in data]) elif data[-1]=='o': data[-1]='1' print ''.join([i for i in data]) else: if data[-1]=='e': data[-1]='1' print ''.join([i for i in data]) elif data[-1]=='o': data[-1]='0' print ''.join([i for i in data])