zcmu-2099
2099: 螞蟻感冒
Time Limit:?1 Sec??Memory Limit:?128 MBSubmit:?64??Solved:?28
[Submit][Status][Web Board]
Description
長(zhǎng)100厘米的細(xì)長(zhǎng)直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。
每只螞蟻都只能沿著桿子向前爬,速度是1厘米/秒。
當(dāng)兩只螞蟻碰面時(shí),它們會(huì)同時(shí)掉頭往相反的方向爬行。
這些螞蟻中,有1只螞蟻感冒了。并且在和其它螞蟻碰面時(shí),會(huì)把感冒傳染給碰到的螞蟻。
請(qǐng)你計(jì)算,當(dāng)所有螞蟻都爬離桿子時(shí),有多少只螞蟻患上了感冒。
Input
第一行輸入一個(gè)整數(shù)n (1 < n < 50), 表示螞蟻的總數(shù)。
接著的一行是n個(gè)用空格分開的整數(shù) Xi (-100 < Xi < 100), Xi的絕對(duì)值,表示螞蟻離開桿子左邊端點(diǎn)的距離。正值表示頭朝右,負(fù)值表示頭朝左,數(shù)據(jù)中不會(huì)出現(xiàn)0值,也不會(huì)出現(xiàn)兩只螞蟻占用同一位置。其中,第一個(gè)數(shù) 據(jù)代表的螞蟻感冒了。
Output
要求輸出1個(gè)整數(shù),表示最后感冒螞蟻的數(shù)目。
Sample Input
35 -2 8Sample Output
1HINT
Source
歷屆試題
思路:
有這種情況1;當(dāng)所有的螞蟻在感冒的右邊,且往左走,則都感冒
2:當(dāng)所有的螞蟻在感冒的左邊,且往右走,則都感冒
兩者加起來在加第一只的感冒螞蟻,結(jié)果就為所求的
#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; }總結(jié)
- 上一篇: 怎么把一个RPM包安装到不同的目录?
- 下一篇: zcmu-2100