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;
}

Download