問題描述
長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。
每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺/秒。
當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。
這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。
請你計算,當所有螞蟻都爬離桿子時,有多少只螞蟻患上了感冒。
輸入格式
第一行輸入乙個整數n (1 < n < 50), 表示螞蟻的總數。
接著的一行是n個用空格分開的整數 xi (-100 < xi < 100), xi的絕對值,表示螞蟻離開桿子左邊端點的距離。正值表示頭朝右,負值表示頭朝左,資料中不會出現0值,也不會出現兩隻螞蟻占用同一位置。其中,第乙個資料代表的螞蟻感冒了。
輸出格式
要求輸出1個整數,表示最後感冒螞蟻的數目。
樣例輸入3
5 -2 8
樣例輸出
1樣例輸入5
-10 8 -20 12 25
樣例輸出
3這題好好分析下
1 假如感冒的螞蟻朝右,那麼只有絕對值比他絕對值大的數並且頭朝左 和 絕對值比他絕對值小的數並且頭朝右&&絕對值比他絕對值大的數並且頭朝左的螞蟻不為0
2 假如感冒的螞蟻朝左,那麼只有絕對值比他絕對值大的數並且頭朝左 和
絕對值比他絕對值小的數並且頭朝右&&絕對值比他絕對值小的數並且頭朝右的螞蟻不為0
說起來有點彆扭,看圖吧
假設三號是感冒的螞蟻。那麼4必定感冒,又因為3遇到4會掉頭,所以2肯定感冒,而1和5因為都是勻速前進,他們都出去了
假如沒有4號,那麼2號也不會感冒,即
絕對值比他絕對值小的數並且頭朝右&&
絕對值比他絕對值大的數並且頭朝左的螞蟻不為0 因為如果右邊為0,3號遍不會掉頭
同理頭朝右一樣的
#include#include#include#includeusing namespace std;
int main()
if(a[0]>0&&you==0) cout<<1;
else if(a[0]<0&&zuo==0) cout<<1;
else cout<642179511
)
藍橋杯 歷屆試題 螞蟻感冒
分析 1 因為只計算數量,所以螞蟻是掉頭還是直接向前走對本題沒有影響 2 如果感冒的螞蟻方向向左 在它左邊的螞蟻 如果向右,則會感染 如果向左則不會感染 在它右邊的螞蟻 如果向右,則不會感染 如果向左 1 如果感冒的那只螞蟻左邊有向右的螞蟻,他會掉頭,則右邊向左的螞蟻會感冒 2 如果感冒的那只螞蟻左...
藍橋杯歷屆試題 螞蟻感冒
問題描述 長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你計算,當所有螞蟻都爬離桿子時,有多少只...
藍橋杯 歷屆試題 螞蟻感冒
這道題分析了一下得出的結論就是最後感冒的螞蟻數量等於絕對值比第乙個感冒的螞蟻的位置大的且方向向左,還有就是比第乙個感冒的螞蟻的位置小的且方向向右。這裡我們很明顯可以發現2個螞蟻碰面之後並沒有什麼影響,2個速度相同的螞蟻同時掉頭不如直接看成速度相同的螞蟻繼續向前走 include include in...