一道水題
時間限制:
1000 ms | 內存限制:
65535 KB
難度:
2
- 描述
-
今天LZQ在玩一種小游戲,但是這游戲數有一點點的大,他一個人玩的累,想多拉一些人進來幫幫他,你能寫一個程序幫幫他嗎?這個游戲是這樣的:有一行數字,如果我們把這行數字中的‘5’都看成空格,那么就得到一行用空格分割的若干非負整數(可能有些整數以‘0’開頭,這些頭部的‘0’應該被忽略掉,除非這個整數就是由若干個‘0’組成的,這時這個整數就是0)。
你的任務是:對這些分割得到的整數,依從小到大的順序排序輸出,大家趕緊寫個程序來幫幫LZQ吧!
- 輸入
-
輸入包含多組測試用例,每組輸入數據只有一行數字(數字之間沒有空格),這行數字的長度不大於5000。
輸入數據保證:分割得到的非負整數不會大於100000000;如果有輸入數據全為5,則輸出0。
- 輸出
-
對於每個測試用例,輸出分割得到的整數排序的結果,相鄰的兩個整數之間用一個空格分開,每組輸出占一行。
- 樣例輸入
-
0051231232050775
- 樣例輸出
-
0 77 12312320
1 //很簡單的一道題,周賽的時候wrong了3次。。。。。。。。。。打擊打擊。。。。紀念下 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 int main() 7 { 8 char s[5005]; 9 int a[5005]; 10 int i,len,k,n; 11 while(scanf("%s",s)!=EOF) 12 { 13 n=0; 14 k=0; 15 len=strlen(s); 16 s[len]='5'; 17 i=0; 18 while(s[i++]=='5'); //跳過前綴5,防止多輸出0 19 for(i--;i<=len;++i) 20 { 21 if(i>0&&s[i]=='5'&&s[i-1]=='5') //忽略連續的5,防止多輸出0 22 continue; 23 if(s[i]!='5') 24 k=k*10+s[i]-'0'; 25 else //遇到5就增加一個數 26 { 27 a[n++]=k; 28 k=0; 29 } 30 } 31 sort(a,a+n); 32 printf("%d",a[0]); 33 for(i=1;i<n;++i) 34 printf(" %d",a[i]); 35 printf("\n"); 36 } 37 return 0; 38 }
