有3种数据要注意
1,开头是5;
2,结尾时5;
3,连续的5在一起;
用Pow处理10的次方问题在交题的时候会编译错,不知道为什么唉,只好手写函数咯,
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
string a;
int b[2000];
int f(int x)
{
int i;
if(x==0){return 1;}
else
{
int re=1;
for(i=0;i<x;i++)
{
re*=10;
}
return re;
}
}
int main()
{
while(cin>>a)
{
memset(b,0,sizeof(b));
int i,j,t=0;
int m=0;
if(a[0]=='5'){m=1;}//对开头是5的数据特殊处理
for(i=a.size()-1;i>=0;i--)
{
if(a[i]!='5')
{
for(j=i;j>=0;j--)
{
if(a[j]=='5')
{
t++;break;
}
b[t]+=(a[j]-48)*f(i-j);
a[j]='5';
}
}
}
if(m){t--;}
sort(b,b+t+1);
cout<<b[0];
for(i=1;i<=t;i++)
{
cout<<' '<<b[i];
}
cout<<endl;
}
return 0;
}