给出一个数n,你需要将n写成若干个数的和,其中每个数的十进制表示中仅包含0和1。
问最少需要多少个数
输入输出格式
输入格式:一行 一个数 n(1≤n≤10^6)
输出格式:最少的数的个数,并给出一种方案。
#include
#include
#include
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;jif(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;jprintf("%d ",a[j]);
}
}
输入一个数后,不会输出任何结果,最后在下方显示Process exited with return value 3221225477
之前无法输入数据的情况,把int数组设为了全局变量。
现在好像是堆栈溢出的原因,但还是找不到问题。
你输入的n是多少?
i没有初始化,将i=0,再进入while,你while中i始终没变。
b数组没初始化,用0初始化。
最后一次打印printf,应该是打印b[i]