完善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; }
第(【41】)空应填写?
n%10
n%2
n-10
n-2
第(【42】)空应填写?
t
n
ans[t]
ans[n]
第(【43】)空应填写?
ans[n]
num loc
t
n
第(【44】)空应填写?
t
n
t/2
n/2
第(【45】)空应填写?
n
k
0
1