Description:
输入a,b,x,给你a个0,b个1,你要给出一个组合,让这个组合里存在x位,使得这x为和其x+1位不相等
Solution:
因为肯定有一个正确的答案,所以钻了一下空子,贪心,让个数多的在前,然后0101这样添加,知道最后一个需要满足的x,因为我这么贪心可定是能找到一个满足的,所以对于最后一个必然存在一个0/1和当前的倒数第一位不同,所以觜最后连续填充0/1,的到最后一个满足的x
Code:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int main() { int a,b,x; while(~scanf("%d%d%d",&a,&b,&x)) { swap(a,b); int usenum = 1; if(a < b)usenum = 0; printf("%d",usenum); if(usenum == 0)b--; else a--; int out = usenum; for(int i = 1;i < x;++i) { out = i & 1 == 1 ? usenum^1 : usenum; if(out == 1)a--; else b--; printf("%d",out); } if(out == 1) { while(a) { printf("1"); a--; } while(b) { printf("0"); b--; } } else { while(b) { printf("0"); b--; } while(a) { printf("1"); a--; } } printf(" "); } return 0; }