問題 c: 對撞
時間限制: 1 sec 記憶體限制: 128 mb
[提交] [狀態]
題目描述
小明發明了乙個數字對撞機,兩個位數相同的整數可以進行碰撞。碰撞過程中,將兩個 整數的每一位進行比較,較小的那個數字會被撞得粉碎,較大的數字保留下來(如果兩數 相同,都會保留)。例如下面例子中:
兩個整數 13570 和 21673 碰撞後,對應數字上較小的值已經消失,碰撞的結果為:第一 個數字剩下 37,第二個數字剩下 2673。
現在小明想讓你寫乙個程式來顯示數字碰撞機的結果,輸入兩個整數,輸出碰撞後的兩 個數字。(注意最終結果不能包含多餘的前導 0)
輸入第一行乙個整數 x,表示輸入的第乙個整數。 第二行乙個整數 y,表示輸入的第二個整數。
輸出輸出包含兩行,第乙個表示 x 碰撞後的結果。 第二行表示 y 碰撞後的結果。 若 x 或者 y 所有數字上的數字都消失了,該行輸出「boom」注意都是大寫的。
樣例輸入 copy
【樣例1】
13570
21673
【樣例2】
300500
【樣例3】
1234
5678
樣例輸出 copy
【樣例1】
372673
【樣例2】
0500
【樣例3】
boom
5678
提示樣例2解釋
300第一位被撞碎了,剩下00,因為不能包含前導0,輸出0。500沒有任何一位被撞碎。
樣例3解釋
1234每一位都被撞碎了,輸出「boom」,5678沒有任何一位被撞碎。
【資料範圍】
對於50%的資料,0≤x,y<10^9
對於80%的資料,0≤x,y<10^100,即x,y的長度不超過100。
對於100%的資料,0≤x,y<=10^1000,即x,y的長度不超過1000。保證所有x和y的位數相同,且x,y本身沒有多餘的前導0
思路:好吧這是一道不算很難的題,但是當時就是卡了我好久qaq
先for迴圈判斷每一位數字的大小,我把小的那一位標記為-1。然後先判斷這個陣列最後是否全是-1,如果全是-1就輸出boom。如果不是全為-1呢,問題就來了,我寫了乙個函式去判斷這個陣列裡是否只有-1和0,這樣的話應該去掉多餘的0,直接輸出0,然後我自信滿滿就提交,結果wa的一敗塗地
後來這樣一組樣例讓我發現了錯誤
5030
6000
0306000
按理說應該輸出30和6000,結果多了乙個零
最後在隊友的幫助下寫下了標記這個東西,在不等於-1的時候輸出,如果這一位不是零,就標記一下,等到有一位是零並且做過標記的話,這個零就可以輸出,這樣就保證去掉了前導零
最後ac的**是這樣的
其實我也覺得自己寫的很醜
string s1,s2;
int a[
1005
],b[
1005];
int len1,len2;
intjudge
(int a)
return1;
}int
judge2
(int a)
return1;
}int
main()
}int flag =0;
if(judge
(a))
elseif(
judge2
(a))
else
else
if(a[i]==0
&& flag ==1)
//這一位是零,前一位不是這個零正常輸出
printf
("%d"
,a[i]);
}}printf
("\n");
}
flag =0;
if(judge
(b))
elseif(
judge2
(b))
else
else
if(b[i]==0
&& flag ==1)
printf
("%d"
,b[i]);
}}printf
("\n");
}return0;
}
春季個人訓練賽 9
sample input41 hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh 2tttttttttttttttttttttttttttttttttttttttt 3hhttthhttththhthhtthttthhhthtthtthttthth 4hththhhth...
UPC2018組隊訓練賽第十場
直接按照題意寫 1 include 2 3using namespace std 4bool cmp int x,inty 5 8int n,m,a 1005 9 intmain 1025 return0 26 view code 輸入的兩個字串相同輸出 identical 如果只有乙個雙引號裡面的...
關於第二次訓練賽
第二次訓練賽甚至比第一次還要差,開始做的時候,因為在調並查集的題目,一時忘了比賽開始時間,這又導致了在開始便就輸在了起跑線上,接下來看a,20分鐘後想到了bfs,不過和p商量後,發現他在吳澤軍的書上找到了原題!用優先佇列做的,感覺很好,在理解了之後,此時時間差不多乙個小時了,開始敲,當然不想用書上的...