bool ok(int zero, int one, int& sv, int& bn)
{
if (zero < 0 || one < 0)
return false;
sv = one / (zero + 1);
bn = one % (zero + 1);
if (sv == 1 || (sv == 2 && bn == 0))
return true;
return false;
}
void display(int n, int m, int sv, int bn)
{
int sn = n + 1 - bn;
int bv = sv + 1;
while (bn > 0 || sn > 0)
{
if (bn > 0)
{
bn--;
REP(i, bv)
putchar(‘1‘);
}
else if (sn > 0)
{
sn--;
REP(i, sv)
putchar(‘1‘);
}
if (n-- > 0)
putchar(‘0‘);
}
}
int main()
{
// freopen("in.txt", "r", stdin);
int n, m, sv, bn;
while (~RII(n, m))
{
if (ok(n, m, sv, bn))
{
display(n, m, sv, bn);
cout << endl;
}
else if (ok(n - 1, m, sv, bn))
{
putchar(‘0‘);
display(n - 1, m, sv, bn);
cout << endl;
}
else if (ok(n - 2, m, sv, bn))
{
putchar(‘0‘);
display(n - 2, m, sv, bn);
putchar(‘0‘);
cout << endl;
}
else
puts("-1");
}
return 0;
}
原文:http://blog.csdn.net/wty__/article/details/21042521