LASCALE - Quả Cân
Tác giả: ll931110
Ngôn ngữ: C++
#include <iostream>
#include <vector>
using namespace std;
int m;
vector<int> v[2];
vector<int> pw;
int main()
{
// freopen("scale.in","r",stdin);
// freopen("scale.ou","w",stdout);
scanf("%d", &m);
int low = 1;
while (1)
{
pw.push_back(low);
if (low >= m) break;
low *= 3;
};
int delta = m,now = 1;
for (int i = pw.size() - 1; i >= 0; i--)
{
if (delta == 0) break;
if (pw[i] < delta)
{
delta -= pw[i]; v[now].push_back(pw[i]);
}
else
{
if (pw[i] > 2 * delta) continue;
delta = pw[i] - delta;
v[now].push_back(pw[i]); now ^= 1;
};
};
for (int i = 0; i < 2; i++)
{
printf("%d ", v[i].size());
for (int j = v[i].size() - 1; j >= 0; j--) printf("%d ", v[i][j]);
if (!i) printf("\n");
};
};