NYOJ-525 一道水題


 

一道水題

時間限制: 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 }

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM