给出一个数n,你需要将n写成若干个数的和,其中每个数的十进制表示中仅包含0和1。
问最少需要多少个数
输入输出格式
输入格式:一行 一个数 n(1≤n≤10^6)
输出格式:最少的数的个数,并给出一种方案。
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int a[1000000];
int main()
{
int m,n,b[10],t=0,s=0,i;
scanf("%d",&n);
m=n;
while(n!=0)
{
a[i]=n%10;
n=n/10;
t++;
}
//t=t-1;
for(i=0;i<10;i++)
{
for(int j=0;j<t;j++)
{
if(a[j]>0)
{
b[i]=b[i]+pow(10,j);
a[j]--;
}
}
s=s+b[i];
if(s==m)
{
i++;
break;
}
}
printf("%d\n",i);
for(int j=0;j<i;j++)
{
printf("%d ",a[j]);
}
}
运行结果及详细报错内容
输入一个数后,不会输出任何结果,最后在下方显示Process exited with return value 3221225477
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
之前无法输入数据的情况,把int数组设为了全局变量。
现在好像是堆栈溢出的原因,但还是找不到问题。