大佬们看看这个错哪了
#include<iostream> using namespace std; string s; int main(){ cin>>s; if(s.size()%2==1) for(int i=0;i<=s.length()/2;i++){ cout<<1-i%2<<1-i%2; } else { int i=0; while(s[i]==s[i+1]&&i<s.size()){ cout<<s[i]<<s[i+1]; i+=2; } if(i>=s.size()){ return 0; } if(s[i]>s[i+1])cout<<s[i]<<s[i]; else if(s[i+1]>s[i])cout<<s[i+1]<<s[i+1]; i+=2; for(int j=0;i<s.size();i+=2,j++){ cout<<j%2<<j%2; } } return 0; }
我的思路是:题目说明的“双生数”一定是偶数位的,第一位和第二位相同,第三位和第四位相同等等以此类推,所以如果输入的x是奇数位,那么直接输出一个比x大一位的11001100……以11和00交替类型的偶数位数,如果x是偶数位数,那么从前往后两位两位地找,找到不相同的两位,把其中较小的一位替换为大的那一位输出这两位,然后后面的所有位数按00110011……以00和11交替输出,直到输出的总位数与x相同