A62497. 完善C++程序:【问题描述】Oier 设计了一种有趣的数字游戏:一位同学随机给出一个数n,其余同学需要构造一个数列 a1,a2,a3.…,ax满足以下条件数列中所有数的和等于 n;数列中的每个数ai的表示中,每一位数字只能是0或1(例如1,101,11011 符合规则,而5,12,8910 不符合规则);在满足上述条件的情况下,尽可能减少数列的长度x你需要输出满足条件的最小的数列长度x以及这个数…
编程题
知识点
题目描述
完善C++程序:
【问题描述】
Oier 设计了一种有趣的数字游戏:
一位同学随机给出一个数n,其余同学需要构造一个数列 a1,a2,a3.…,ax满足以下条件
数列中所有数的和等于 n;
数列中的每个数ai的表示中,每一位数字只能是0或1(例如1,101,11011 符合规则,而5,12,8910 不符合规则);
在满足上述条件的情况下,尽可能减少数列的长度x
你需要输出满足条件的最小的数列长度x以及这个数列。

#include<bits/stdc++.h>
using namespace std;
int ans[100001];
int main()
{
int n,t = 0,num loc =0;
cin >> n;
while (n != 0)
{
ans[++t]=_【41】_;
if (ans[t] > num loc)
num loc=_【42】_;
n/= 10;
}
cout <<_【43】_<< endl;
for (inti= 1;i <= num loc; i++)
{
int k=0;
for (intj=【44;j>= 1;j--)
{
if (ans[j] != 0)
{
k=_【45】_;
cout << 1;
ans[j]--;
}
else if (k)
cout << 0
}
cout <<"";
}
return 0;
}