传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1106
坑提示:可能出现多个"5"连在一起,按个读取最后k计位可能会多会少,所以判断了四种可能。
AC代码:
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char arr[1002];
int num[1001];
int main()
{
while(~scanf("%s",arr))
{
memset(num,0,sizeof(num));
int k=0;
for(int i=0;i<strlen(arr);i++)
{
if(arr[i]!='5')
{
num[k]=num[k]*10+arr[i]-'0' ;
}
else if(arr[i-1]!='5') k++;
}
if(arr[0]!='5')
{
if(arr[strlen(arr)-1]=='5')
{
sort(num,num+k);
for(int i=0;i<k;i++) printf("%d%c",num[i],i!=k-1?' ':'\n');
}
else
{
sort(num,num+k+1);
for(int i=0;i<=k;i++) printf("%d%c",num[i],i!=k?' ':'\n');
}
}
else
{
if(arr[strlen(arr)-1]=='5') k--;
sort(num+1,num+k+1);
for(int i=1;i<=k;i++) printf("%d%c",num[i],i!=k?' ':'\n');
}
}
return 0;
}