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

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

来源2024年
时间限制1s
内存限制256MB
通过 / 提交0/0

题目描述

完善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;
}
C++ 编辑器
输入
输出