CF394A Counting Sticks
随便搞,设一开始等式 ,显然 时有解,然后判断是 还是 ,模拟即可。
代码:
#include <iostream>
#include <cstdio>
#include <string>
#include <cmath>
using namespace std;
string s;
int cnt[5], now, nc = 0;
int main()
{
cin >> s;
s += '+';
for (int i(0); i < s.size(); i++)
{
if (s[i] != '|')
{
cnt[++now] = nc;
nc = 0;
}
else nc++;
}
int t = cnt[1] + cnt[2];
if (cnt[1] + cnt[2] == cnt[3])
{
s.erase(--s.end());
cout << s << endl;
return 0;
}
if (abs(t - cnt[3]) != 2) printf("Impossible");
else
{
if (cnt[3] - t == 2)
{
for (int i(1); i <= cnt[1] + 1; i++) printf("|");
printf("+");
for (int i(1); i <= cnt[2]; i++) printf("|");
printf("=");
for (int i(1); i < cnt[3]; i++) printf("|");
puts("");
}
else
{
if (cnt[1] != 1)
{
for (int i(1); i < cnt[1]; i++) printf("|");
printf("+");
for (int i(1); i <= cnt[2]; i++) printf("|");
printf("=");
for (int i(1); i <= cnt[3] + 1; i++) printf("|");
puts("");
}
else
{
for (int i(1); i <= cnt[1]; i++) printf("|");
printf("+");
for (int i(1); i < cnt[2]; i++) printf("|");
printf("=");
for (int i(1); i <= cnt[3] + 1; i++) printf("|");
puts("");
}
}
}
return 0;
}

浙公网安备 33010602011771号