LASCALE - Quả Cân
Tác giả: skyvn97
Ngôn ngữ: C++
#include<bits/stdc++.h>
using namespace std;
int scl[25];
int m,nd;
int d[25];
vector<int> l;
vector<int> r;
void process(void) {
scanf("%d",&m);
nd=0;
while (m>0) {
nd++;
d[nd-1]=m%3;
m=m/3;
}
int i;
l.clear();
r.clear();
scl[0]=1;
for (i=1;i<20;i=i+1) scl[i]=scl[i-1]*3;
for (i=0;i<nd;i=i+1) {
if (d[i]==1) r.push_back(scl[i]);
if (d[i]==2) l.push_back(scl[i]);
if (d[i]>1) {
d[i]=3-d[i];
if (i+1>=nd) {
nd++;
d[nd-1]=1;
}
else d[i+1]++;
}
}
sort(l.begin(),l.end());
sort(r.begin(),r.end());
printf("%d",(int)l.size());
for (i=0;i<l.size();i=i+1) printf(" %d",l[i]); printf("\n");
printf("%d",(int)r.size());
for (i=0;i<r.size();i=i+1) printf(" %d",r[i]); printf("\n");
}
int main(void) {
process();
return 0;
}