zcmu-2099
2099: 螞蟻感冒
Time Limit:?1 Sec??Memory Limit:?128 MBSubmit:?64??Solved:?28
[Submit][Status][Web Board]
Description
長100厘米的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。
每只螞蟻都只能沿著桿子向前爬,速度是1厘米/秒。
當兩只螞蟻碰面時,它們會同時掉頭往相反的方向爬行。
這些螞蟻中,有1只螞蟻感冒了。并且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。
請你計算,當所有螞蟻都爬離桿子時,有多少只螞蟻患上了感冒。
Input
第一行輸入一個整數n (1 < n < 50), 表示螞蟻的總數。
接著的一行是n個用空格分開的整數 Xi (-100 < Xi < 100), Xi的絕對值,表示螞蟻離開桿子左邊端點的距離。正值表示頭朝右,負值表示頭朝左,數據中不會出現0值,也不會出現兩只螞蟻占用同一位置。其中,第一個數 據代表的螞蟻感冒了。
Output
要求輸出1個整數,表示最后感冒螞蟻的數目。
Sample Input
35 -2 8Sample Output
1HINT
Source
歷屆試題
思路:
有這種情況1;當所有的螞蟻在感冒的右邊,且往左走,則都感冒
2:當所有的螞蟻在感冒的左邊,且往右走,則都感冒
兩者加起來在加第一只的感冒螞蟻,結果就為所求的
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<cstdlib> #include<vector> #include<stack> #include<queue> #include<map> #include<set> #include<list> #include<ctime> #include<algorithm> using namespace std;int gcd(int a,int b) {return b==0?a:gcd(b,a%b); } int main() {int a[105]={0};int n;scanf("%d",&n);int l=0,r=0;for(int i=0; i<n; i++)scanf("%d",&a[i]);for(int i=1; i<n; i++){if(fabs(a[i])>fabs(a[0])&&a[i]<0)l++;if(fabs(a[i])<fabs(a[0])&&a[i]>0)r++;}if(a[0]<0&&r==0||a[0]>0&&l==0)printf("1\n");else printf("%d\n",l+r+1);return 0; }總結
- 上一篇: 怎么把一个RPM包安装到不同的目录?
- 下一篇: zcmu-2100