比赛 20120224 评测结果 AWWWWWWW
题目名称 神奇的数列 最终得分 12
用户昵称 QhelDIV 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-02-24 21:53:33
显示代码纯文本
#include <fstream>
using namespace std;
ifstream fin("chain.in");
ofstream fout("chain.out");
int Q[10000],N,Total,Ans[10000],AN;
bool flag[10000];
void Initialize()
{
int i;
	Q[1]=1;
	fin>>N;
	for(i=2;i<=31;i++)
	{
		Q[i]=Q[i-1]*2;
	}
}

void Ba_Se(int Remain)
{
int Mid,head=1,tail=31;
	if(Remain==0)
		return;
	for(;head<tail;)
	{
		Mid=(head+tail)/2;
		if(Q[Mid]<Remain)
			head=Mid+1;
		else
			tail=Mid;
	}
	if(Q[head]>Remain)
		head--;
	Total++;
	Ans[Total]=Remain;
	if(Q[head]!=Remain)
	{
		Total++;
		Ans[Total]=Q[head];
	}
		Ba_Se(Remain-Q[head]);
}

void Op()
{
int i;	
	fout<<Total<<endl;
	for(i=Total;i>=1;i--)
		fout<<Ans[i]<<" ";
}

int main()
{
	Initialize();
	
	Ba_Se(N);
	
	Op();
	
	fin.close();
	fout.close();
	return 0;
}