这道题的关键点
1,n 和 (a + b )的关系, 有两种关系,一种是 n > (a + b) 这种情况会有平局,另一种就是n <= (a + b) 这样就不会有平局
对于第一种情况平局只可能是 0 : 0 的情况 先输出0 :0然后输出 1:0 0 :1 即可
第二种是需要先对a和b中较小的一个进行输出,否则最后较大的输出时可能会和较小的相等,所以要先输出较小的
2,对于n == 1的情况要进行特判一下
下面是ac代码
#include <iostream>
using namespace std;
typedef long long ll;
int n, a, b;
signed main()
{
cin >> n;
cin >> a;
cin >> b;
if (n == 1)
{
if (a == b)
{
cout << 1 << endl;
cout << a << ':' << b;
}
else
{
cout << 0 << endl;
cout << a << ':' << b;
}
}
else if (n > (a + b))
{
int x = n - (a + b);
cout << x << endl;
while (x)
{
cout << 0 << ':' << 0 << endl;
x--;
}
while (a)
{
cout << 1 << ':' << 0 << endl;
a--;
}
while (b)
{
cout << 0 << ':' << 1 << endl;
b--;
}
}
else
{
cout << 0 << endl;
if (a <= b)
{while (a && n >= 2)
{
cout << 1 << ':' << 0 << endl;
a--;
n--;
}
while (b && n >= 2)
{
cout << 0 << ':' << 1 << endl;
b--;
n--;
}
cout << a << ':' << b;
}
else
{while (b && n >= 2)
{
cout << 0 << ':' << 1 << endl;
n--;
b--;
}
while (a && n >= 2)
{
cout << 1 << ':' << 0 << endl;
a--;
n--;
}
cout << a << ':' << b;
}
}
return 0;
}