70分求助!!!二进制做法
查看原帖
70分求助!!!二进制做法
1051943
Curry_mvp楼主2024/8/5 18:27

红题都过不了,我也是服了我自己了(就这样打复赛能拿几分啊!!??)

评测记录 (WA#1.2.5.6.7.8)

做法就是将十进制数转换为二进制再倒序输出

代码如下:

#include <bits/stdc++.h>
using namespace std;
#define int  long long int
int a[50];
int n;
int cnt;
bool flag=1;
void special()
{
	if(n%2==1)
	{
		cout<<"-1"<<"\n";
		flag=0;
	}
}
void tentotwo()
{
	cnt=1;
	while(n)
	{
		a[cnt]=n%2;
		n/=2;
		cnt++;
	}
}
void print()
{
	if(flag==0)
	{
		cout<<-1<<"\n";
		return ;
	}
	//cout<<cnt<<"\n";
	for(int i=cnt-1;i>=1;i--)
	{
		if(a[i]!=0)
		{
			cout<<(2<<(i-2))<<" ";
		}
		//cout<<a[i];
		
	}
	cout<<"\n";
}
signed main ()
{
	cin>>n;
	special();
	tentotwo();
	print();
	return 0;
}

感谢dalao帮忙

2024/8/5 18:27
加载中...