一道模拟题,寻找漂亮的数。
题意:
输入n个数,找到不漂亮的数。漂亮的数指只包含0和1的数并且最多只有一个1。
当出现0的时候,就直接输出0。如果全是漂亮的数,就先输出一个1,再把所有零输出出来。
如果有多个不漂亮的数,那就把这个数输出出来,然后再把其他0,输出出来(注意不要把最后那个不漂亮的数的零重复输出了)
思路没有什么思路,就是简单的模拟题。
代码:
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<math.h>
using namespace std;
char str[100010];
char ch[100010];
int main() {
int n,flag,flag2,num0,num1,num3,all0;
while(scanf("%d",&n) != EOF) {
all0 = 0;
flag = flag2 = 0;
while(n--) {
scanf("%s",str);
num1 = 0;
num3 = 0;
int len = strlen(str);
if(str[0] == '0')
flag = 1;
else {
for(int i = 0; i < len; i++) {
if(str[i] == '1')
num1++;
else if(str[i] == '0') {
all0++;
}else
num3++;
}
if(num1 != 1 || num3 != 0){
strcpy(ch,str);
num0 = 0;
for(int i = 0;i < len;i++){
if(ch[i] == '0')
num0++;
}
flag2 = 1;
}
}
}
if(flag)
printf("0\n");
else if(flag2) {
printf("%s",ch);
for(int i = 1; i <= all0 - num0; i++) // 剪掉重复的0
printf("0");
printf("\n");
} else {
printf("1");
for(int i = 1; i <= all0; i++)
printf("0");
printf("\n");
}
}
return 0;
}